Neu bei Akka and Actors - Ich muss ein paar Schauspieler starten, die ihr Leben damit verbringen werden, von Kafka-Themen zu lesen und in einen Ignite-Cache zu schreiben. Ich baute mein Dispatcher wie folgt aus:Akka Darsteller läuft Endlosschleife nach Initialisierungsmeldung
kafka-dispatcher {
executor = "thread-pool-executor"
type = PinnedDispatcher
}
Meine Schauspieler mit .withDispatcher("kafka-dispatcher")
geschaffen, und meine Vermutung ist, dass jeder Akteur ein einzelner Thread zugeordnet wird.
Diese Akteure verbringen im Grunde ihr Leben wie folgt aus:
override def receive: Receive = LoggingReceive {
case InitWorker => {
initialize()
pollTopic() // This never returns
}
}
Mit anderen Worten, sie erhalten eine Nachricht Initialisierung und rufen dann die pollTopic()
Methode, die nie zurückgibt - eine Schleife läuft das Lesen (die bis blockieren es gibt Daten) und dann schreiben Sie die Daten.
Meine Fragen:
- Ist das koscher?
- Gibt es einen besseren, d. H. Mehr idiomatischen Weg, dies zu tun? Beachten Sie, dass der Leseaufruf innerhalb von
pollTopic()
blockiert.