我正在使用Apache Kafka 0.8.2.1,计划升级我的应用程序以使用Apache kafka 1.0.0。 当我检查Kafka Streams时,我对KafkaConsumer和KafkaStreams之间的区别提出了一些疑问。
基本上,KafkaConsumer必须使用轮询方法从经纪人处消费。我可以在轮询时指定一些持续时间,每当我得到ConsumerRecored时,我都可以处理它以产生一些有用的信息。 另一方面,KafkaStream不必指定任何轮询持续时间,只需调用start()方法。
我知道KafkaConsumer基本习惯consume
从字面上看,来自经纪人和KafkaStreams可以做各种事情,如Map-Reduce
或与数据库交互,甚至可以重新生成其他kafka或任何其他系统。
所以,有我的问题。 KafkaConsumer和KafkaStream之间有什么区别(换句话说,当谈到apache kafka库的级别时。)?
答案 0 :(得分:2)
是的,Kafka Consumer和Kafka Streams之间存在差异。
Kafka Consumer可以在接收端用于接收数据和进程以供将来计算(基于主题和分区) Kafka Streams API可以将已发布的内容实时存储和分发到各种应用程序和系统中,以供读者使用。
答案 1 :(得分:1)
正如您所说,它们提供不同的功能:
KafkaStreams使用封面下的常规KafkaConsumers和KafkaProducers客户端来检索记录并将处理结果发送给经纪人。它为许多配置使用预定义值,但仍然暴露了许多客户端配置。
KafkaStreams是使用Kafka客户端(消费者和制作人)的常规(尽管非常先进)Kafka应用程序。它的API允许更高级别的应用程序专注于业务逻辑而不是Kafka细节。
作为Apache Kafka发行版的一部分,它正在使用最佳实践和技巧来充分利用Kafka。