2016-04-07 28 views
1

Akka ve Aktörlere yeni - Temelde Kafka konularından okuma ve bir Ignite önbelleğe yazarak hayatlarını geçirecek birkaç oyuncuya başladım. Bu gibi benim dağıtıcınızın yapılandırılmış:Başlatma mesajından sonra sonsuz döngü çalışan Akka Aktör

kafka-dispatcher { 
    executor = "thread-pool-executor" 
    type  = PinnedDispatcher 
} 

Oyuncularım .withDispatcher("kafka-dispatcher") ile oluşturulur, ve benim varsayım, her aktör bireysel iplik atanacak olmasıdır.

Bu aktörler temelde böyle hayatlarını geçirmek:

başka deyişle
override def receive: Receive = LoggingReceive { 
    case InitWorker => { 
    initialize() 
    pollTopic() // This never returns 
    } 
} 

, onlar başlatma iletisi ve sonra döner asla pollTopic() yöntemi çağırmak - bu kadar engeller okuma bir döngü (ishal veri var) ve ardından veriyi yazıyor.

Sorularım:

  1. bu koşer midir?
  2. Bunu yapmak için daha iyi, yani daha deyimsel bir yol var mı? pollTopic() blokları içinde okuma aramayı unutmayın. senin noktaya 2'ye ve yapmaya çalıştığımız şeyin açıklamasından cevaplama

cevap

3

, belki reactive-kafka kütüphane ile Akka streams kullanmayı düşünebilirsiniz. Akka akışları, kaputun altındaki aktörleri kullanır, ancak bunları sizin için yönetir, böylece yalnızca tek bir şeyi yapan yeniden kullanılabilir küçük bileşenlerin uygulanmasına odaklanabilirsiniz. Veri akışınız için Kafka'yı Source olarak kullanarak veri işleme hatlarını yazabileceksiniz. Ignite önbellek hakkında pek bir şey bilmiyorum, ancak şansınız ya bunun için bir Sink yazacaksınız ya da bir engelleme API'sinden bahsediyorsanız, arkadaşınız mapAsync olacaktır.