Apache Camel Kafka Consumer提供名为“consumerStreams”和“consumersCount”的URI选项。
需要了解差异和使用方案以及它如何适应多分区Kafka主题消息消费
答案 0 :(得分:3)
consumerStreams
用于旧版本的Camel-Kafka组件,例如2.13,您可以看到here
consumersCount
用于最新版本的Camel-Kafka组件(请参阅here),它代表将要实例化的org.apache.kafka.clients.consumer.KafkaConsumer
的数量,因此您应该将其用于多分区消费
答案 1 :(得分:0)
consumerCount
控制骆驼端点创建多少个消费者实例。因此,如果您的主题中有3个分区,并且consumerCount为3,则一次可以消耗3条消息(每个分区1条)。 此设置完全符合您对文档的期望
consumerStreams
是一个完全不同的设置,并且恕我直言,其名称具有误导性,并且文档具有误导性。
consumerStreams:使用者上的并发使用者数
但是源代码揭示了其真正目的:
consumerStreams
配置可供所有使用者使用的线程数。在内部,Kafka端点为每个使用者创建一个Runnable。 (consumerCount = 3
)表示3个Runnable。这些可运行对象由ThreadPoolExecutorService
执行,并由consumerStreams
设置缩放。
由于单个使用者线程是长时间运行的任务,所以consumerStreams
的唯一目的可以是处理重新连接或阻塞的线程。 为consumerStreams
设置更高的值不会带来更多的并行化。并且最好将其命名为consumerThreadPoolSize
或类似的名称。