reactive-kafka:为什么出版商和#34;一起去"消费者?

时间:2016-08-28 07:21:43

标签: apache-kafka reactive-kafka

我查看了以下文档: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()
))

我理解'出版商'应该写给Kafka的消息。然而,卡夫卡的消费者意味着完全相反,意味着消费者从卡夫卡读取消息。如果是这样,那么'出版商'与kafka.consume(ConsumerProperties ...)有关?

1 个答案:

答案 0 :(得分:1)

这是一个非常令人困惑的术语碰撞案例。 Reactive-kafka使用Akka Streams,这是Reactive Streams specification的实现。

在此规范中,Publisher发布到流,Subscriber从流中接收结果。正如您所看到的,当您定义用于处理Kafka消息的流时,Kafka使用者充当Publisher,因为它是消息的来源(akka-streams术语中的Source)。类似地,Kafka生成器将是Subscriber,因为它位于流的末尾(akka-streams中的Sink)。

因此,在您的代码中,您为流是Kafka消费者定义了Publisher