Reactive-Kafka:为什么出版商"go with"消费者?



我查看了下面的文档: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中的消费者的意思正好相反,意味着消费者从Kafka读取消息。如果是这样,"publisher"与kafka.consume(ConsumerProperties…)有什么关系?

这是一个非常令人困惑的术语冲突案例。Reactive-kafka使用Akka Streams,这是一个响应式流规范的实现。

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

所以在你的代码中你定义了一个Publisher到你的流,它是一个Kafka消费者。

相关内容

  • 没有找到相关文章

最新更新