So wurde ich Tutorial über akka Lesen und kam in dieser http://manuel.bernhardt.io/2014/04/23/a-handful-akka-techniques/ und ich glaube, er erklärt es ziemlich gut, ich habe einfach scala vor kurzem und über Schwierigkeiten mit dem Tutorial mit,Unterschied zwischen RoundRobinRouter und RoundRobinRoutinglogic
Ich frage mich, was ist der Unterschied zwischen RoundRobinRouter und der aktuellen RoundRobinRouterLogic? Offensichtlich ist die Implementierung ganz anders.
Bisher war die Implementierung von RoundRobinRouter ist
val workers = context.actorOf(Props[ItemProcessingWorker].withRouter(RoundRobinRouter(100)))
mit processBatch
def processBatch(batch: List[BatchItem]) = {
if (batch.isEmpty) {
log.info(s"Done migrating all items for data set $dataSetId. $totalItems processed items, we had ${allProcessingErrors.size} errors in total")
} else {
// reset processing state for the current batch
currentBatchSize = batch.size
allProcessedItemsCount = currentProcessedItemsCount + allProcessedItemsCount
currentProcessedItemsCount = 0
allProcessingErrors = currentProcessingErrors ::: allProcessingErrors
currentProcessingErrors = List.empty
// distribute the work
batch foreach { item =>
workers ! item
}
}
}
Hier ist meine Implementierung von RoundRobinRouterLogic
var mappings : Option[ActorRef] = None
var router = {
val routees = Vector.fill(100) {
mappings = Some(context.actorOf(Props[Application3]))
context watch mappings.get
ActorRefRoutee(mappings.get)
}
Router(RoundRobinRoutingLogic(), routees)
}
und behandelt, um die processBatch als solche
def processBatch(batch: List[BatchItem]) = {
if (batch.isEmpty) {
println(s"Done migrating all items for data set $dataSetId. $totalItems processed items, we had ${allProcessingErrors.size} errors in total")
} else {
// reset processing state for the current batch
currentBatchSize = batch.size
allProcessedItemsCount = currentProcessedItemsCount + allProcessedItemsCount
currentProcessedItemsCount = 0
allProcessingErrors = currentProcessingErrors ::: allProcessingErrors
currentProcessingErrors = List.empty
// distribute the work
batch foreach { item =>
// println(item.id)
mappings.get ! item
}
}
}
Ich kann dieses Tutorial irgendwie nicht ausführen, und es ist an dem Punkt fest, wo es die Batch-Liste iteriert. Ich frage mich, was ich falsch gemacht habe.
Dank
Thanks :) Art_Rebel – kenlz
wenn es nützlich ist, markieren Sie diesen Beitrag als beantwortet, bitte. – pacman
Markierte es als nützlich, ich suchte nach der Ersatzimplementierung für RoundRobinRouter :) – kenlz