Apache camel 使用Apache camel Kafka consumer URI选项consumerStreams与ConsumerCount的目的和区别

Apache camel 使用Apache camel Kafka consumer URI选项consumerStreams与ConsumerCount的目的和区别,apache-camel,apache-kafka,Apache Camel,Apache Kafka,Apache Camel Kafka Consumer提供了名为“consumerStreams”和“ConsumerCount”的URI选项 需要了解差异和使用场景,以及它如何适应多分区Kafka主题消息消费我检查了Camel Kafka源代码,似乎这些参数的用法有所不同 consumerStreams在Camel-Kafka组件的旧版本中使用,如2.13所示 ConsumerCount用于最新版本的Camel-Kafka组件(请参阅),它表示将被实例化的org.apache.Kafka.cl

Apache Camel Kafka Consumer提供了名为“consumerStreams”和“ConsumerCount”的URI选项


需要了解差异和使用场景,以及它如何适应多分区Kafka主题消息消费

我检查了Camel Kafka源代码,似乎这些参数的用法有所不同

consumerStreams
在Camel-Kafka组件的旧版本中使用,如2.13所示

ConsumerCount
用于最新版本的Camel-Kafka组件(请参阅),它表示将被实例化的
org.apache.Kafka.clients.consumer.KafkaConsumer
,因此您应该真正将其用于多分区消费


它们似乎是在camel 2.16中一起使用的。camel 2.16控制camel端点创建的消费者实例的数量。因此,如果您的主题中有3个分区,并且您的consumerCount为3,那么您一次可以使用3条消息(每个分区1条)此设置完全符合您对文档的期望

consumerStreams
是一个完全不同的设置,它有一个误导性的名称和误导性的文档

目前,文档()显示:

consumerStreams:使用者上的并发使用者数

但源代码揭示了它的真正目的:

consumerStreams
配置可供所有使用者运行的线程数量。Kafka端点在内部为每个使用者创建一个可运行的端点。(
consumerCount=3
)表示3个可运行项。这些可运行程序由
ThreadPoolExecutorService
执行,该服务由
consumerStreams
设置缩放


由于单个使用者线程是长时间运行的任务,
consumerStreams
的唯一目的是处理重新连接或阻塞的线程对于
消费者流
来说,更高的值不会导致更多的并行化。
最好将其命名为
消费者阅读池大小
或类似的名称。

欢迎使用Stackoverflow!你能详细说明你的问题吗?用你的努力,比如代码或者其他什么,这样人们就能尽早发现你的问题并帮助你?谢谢我认为这个答案是错误的(至少在2019年)。