我查看了以下文档: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...)有什么关系呢?
发布于 2016-08-30 09:43:11
这是一个术语冲突的真正令人困惑的案例。Reactive-kafka使用Akka Streams,它是Reactive Streams specification的一个实现。
在本规范中,Publisher发布到一个流,而Subscriber从一个流接收结果。正如您可能看到的,当您定义用于处理Kafka消息的流时,Kafka使用者充当Publisher,因为它是消息源(在akka-streams术语中为Source)。类似地,Kafka生产者将是一个流,因为它位于流的末尾(akka- Subscriber中的Sink)。
因此,在您的代码中,您定义了一个指向您的流的Publisher,它是一个Kafka消费者。
https://stackoverflow.com/questions/39188906
复制相似问题