了解消费者组ID

新手上路,请多包涵

我全新安装了 Apache Kafka 0.10.1.0。

我能够在命令提示符下发送/接收消息。

在使用 Producer / Consumer Java Example 时,我无法知道 Consumer Example 上的 group.id 参数。

让我知道如何解决这个问题。

以下是我使用过的消费者示例:

 public static void main(String[] args) {
             Properties props = new Properties();
             props.put("bootstrap.servers", "localhost:9092");
             props.put("group.id", "my-topic");
             props.put("enable.auto.commit", "true");
             props.put("auto.commit.interval.ms", "1000");
             props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
             props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
             KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
             try {
                 consumer.subscribe(Arrays.asList("my-topic"));

                     ConsumerRecords<String, String> records = consumer.poll(100);
                     System.err.println("records size=>"+records.count());
                     for (ConsumerRecord<String, String> record : records)
                         System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());

              }
             catch (Exception ex){
                 ex.printStackTrace();
             }
            finally {
                 consumer.close();
            }
        }

为消费者运行命令后,我可以看到生产者发布的消息(在控制台上)。但无法看到来自 java 程序的消息

bin\windows\kafka-console-consumer.bat –bootstrap-server localhost:9092 –topic 我的主题 –from-beginning

原文由 Ankit 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 543
1 个回答

消费者用消费者组名称标记自己,发布到主题的每条记录都将传递给每个订阅消费者组中的一个消费者实例。消费者实例可以在不同的进程中或在不同的机器上。

如果所有消费者实例都具有相同的消费者组,那么记录将有效地在消费者实例上进行负载平衡。

如果所有的消费者实例都有不同的消费者组,那么每条记录都会被广播到所有的消费者进程。

group.id 是一个字符串,用于唯一标识此消费者所属的消费者进程组。

卡夫卡介绍

原文由 Raz Omessi 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题