用途和差异黑白Apache骆驼Kafka消费者URI选项消费者流vs消费者数

use*_*392 6 apache-camel apache-kafka

Apache Camel Kafka Consumer提供了称为“ consumerStreams”和“ consumersCount”的URI选项。

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

Chr*_*ris 8

consumerCount控制骆驼端点创建了多少消费者实例。因此,如果您的主题中有 3 个分区并且您的 consumerCount 为 3,那么您可以一次使用 3 条消息(每个分区 1 条)。此设置完全符合您对文档的期望

consumerStreams 是一个完全不同的设置,恕我直言,一个误导性的名字和一个误导性的文档。

目前文档(https://github.com/apache/camel/blob/master/components/camel-kafka/src/main/docs/kafka-component.adoc)说:

消费者流:消费者上的并发消费者数

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

consumerStreams配置可供所有消费者运行的线程数。在内部,Kafka 端点为每个消费者创建一个 Runnable。( consumerCount = 3) 表示 3 个 Runnable。这些 runnable 由一个ThreadPoolExecutorServiceconsumerStreams设置缩放的an 执行。

由于单个消费者线程是长时间运行的任务,因此唯一的目的consumerStreams是处理重新连接或阻塞的线程。较高的值consumerStreams不会导致更多的并行化。它最好被命名consumerThreadPoolSize或类似的东西。


vor*_*lex 3

我检查了Camel Kafka源代码,似乎这些参数超时有不同的用途。

consumerStreams用于旧版本的 Camel-Kafka 组件,例如 2.13,如您在此处看到的

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

看来它们在camel 2.16中一起使用

  • 我认为这个答案是错误的(至少截至 2019 年)。 (3认同)