0

私は次のドキュメントを見ました: https://github.com/akka/reactive-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()
))

「publisher」が Kafka にメッセージを書き込むことになっていることを理解しています。ただし、Kafka の Consumer は正反対の意味であり、コンシューマーが Kafka からメッセージを読み取ることを意味します。もしそうなら、「publisher」が kafka.consume(ConsumerProperties...) に関連していることはどのように理にかなっていますか?

4

1 に答える 1

1

これは、用語の衝突の非常に紛らわしいケースです。Reactive-kafka は、 Reactive Streams 仕様の実装であるAkka Streamsを使用します。

この仕様では、ストリームにPublisherパブリッシュし、ストリームSubscriberから結果を受け取ります。ご覧のとおり、Kafka メッセージを処理するためのストリームを定義すると、Kafka コンシューマPublisherはメッセージのソースであるため ( Sourceakka-streams 用語で) として機能します。同様に、Kafka プロデューサーは、ストリーム ( akka-streams 内)Subscriberの最後にあるため、 になります。Sink

したがって、コードPublisherでは、Kafka コンシューマーであるストリームに を定義します。

于 2016-08-30T01:43:10.580 に答える