apache-kafka - Kafka Consumer 分发未按预期工作
问题描述
我有三个主题,每个主题在 kafka 集群上都有三个分区。
现在,共有 9 个分区。当我创建 9 个消费者时... 6 个处于空闲状态。只使用了三个消费者。
期望是:每个消费者应该拾取一个分区,因此,9 个消费者应该从 9 个分区中拾取文档
但发生的情况是:一个消费者从三个不同主题之一的分区中获取消息。
例如,我有三个主题 Topic_A、Topic_B 和 Topic_C 以及每个三个分区。因此分区如下:
Topic_A_0、Topic_A_1、Topic_A_2、Topic_B_0、Topic_B_1、Topic_B_2、Topic_C_0、Topic_C_1、Topic_C_2
当我创建 9 个消费者时,分配工作如下:
Consumer1: Topic_A_0,Topic_B_0,Topic_C_0
Consumer2: Topic_A_1,Topic_B_1,Topic_C_1
Consumer3: Topic_A_2,Topic_B_2,Topic_C_2
Consumer4,Consumer5,Consumer6,Consumer7,Consumer8,Consumer9 are idle
它应该是
Consumer1: Topic_A_0
Consumer2: Topic_A_1
Consumer3: Topic_A_2
Consumer4: Topic_B_0
Consumer5: Topic_B_1
Consumer6: Topic_B_2
Consumer7: Topic_C_0
Consumer8: Topic_C_1
Consumer9: Topic_C_2
是否有任何配置我需要让所有 9 个消费者从 9 个独特的分区中获取消息?
解决方案
确保您的所有消费者都订阅了同一消费者组 ID 下的同一组主题。对于主题列表,您可以传递预定义的列表或正则表达式供消费者订阅。可以使用消费者中的group.id
属性设置消费者 ID。
推荐阅读
- azure-cosmosdb - SqlQuerySpec 参数化查询不返回结果
- php - 如何在 search.php 中使用 wp 循环
- typescript - Visual Studio 2017 CE 中的 TypeScript 调试不起作用
- c# - 将字符串添加到 Hashtable 时,字符串获得无法识别的字符
- java - 解密字符串时出现 InvalidCipherTextException “垫块损坏”
- python - 根据这些行中的值创建包含现有列的行的新列
- java - 如何使用 RestAssured post 方法上传多个图像
- android - Android:AppCompatAcitivity 的构造函数在哪里?
- kubernetes - 在 Kubernetes 集群上应用 Calico 网络时出错
- java - Android 应用程序读写物理内存