2016-08-28 5 views
0

私は、次のドキュメントを見て:私は「出版社」がカフカにメッセージを書き込むようになっていることを理解しreact-kafka:なぜパブリッシャーは消費者に「行く」?

implicit val actorSystem = ActorSystem("ReactiveKafka") 
implicit val materializer = ActorMaterializer() 

val kafka = new ReactiveKafka() 
val publisher: Publisher[StringConsumerRecord] = kafka.consume(ConsumerProperties(
bootstrapServers = "localhost:9092", 
topic = "lowercaseStrings", 
groupId = "groupName", 
valueDeserializer = new StringDeserializer() 
)) 

https://github.com/akka/reactive-kafkaと私は、次のコードスニペットを見ました。しかし、カフカの消費者はまったく逆の意味であり、消費者はカフカからのメッセージを読むという意味です。もしそうなら、「出版社」はkafka.consume(ConsumerProperties ...)に関連しているとはどういう意味ですか?

答えて

1

これは、用語の衝突の本当に混乱するケースです。 Reactive-kafkaは、Reactive Streams specificationの実装であるAkka Streamsを使用します。

Publisherはストリームにパブリッシュし、Subscriberはストリームから結果を受け取ります。ご覧のように、Kafkaメッセージを処理するストリームを定義すると、Kafkaの消費者はPublisherとして動作します(メッセージの送信元であるため、Sourceはakka-streamsの用語になります)。同様に、カフカプロデューサは、ストリームの最後にあるため(Sink akka-streams)、Subscriberになります。

あなたのコードでは、あなたのストリームにはカフカの消費者であるPublisherを定義します。

関連する問題