gpt4 book ai didi

java - 消费者。如何指定要读取的分区? [卡夫卡]

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:18:14 29 4
gpt4 key购买 nike

我正在学习 Kafka,我想知道当我消费来自主题的消息时如何指定然后分区。

我找到了几张这样的图片:

enter image description here

这意味着一个消费者可以消费来自多个分区的消息,但一个分区只能由单个消费者(在消费者组内)读取。

此外,我已经阅读了几个消费者示例,它们看起来像这样:

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("group.id", "consumer-tutorial");
props.put("key.deserializer", StringDeserializer.class.getName());
props.put("value.deserializer", StringDeserializer.class.getName());
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);

和:

订阅:

consumer.subscribe(Arrays.asList(“foo”, “bar”)); 

投票

 try {
while (running) {
ConsumerRecords<String, String> records = consumer.poll(1000);
for (ConsumerRecord<String, String> record : records)
System.out.println(record.offset() + ": " + record.value());
}
} finally {
consumer.close();
}

这是如何运作的?我将从哪个分区读取消息?

最佳答案

有两种方法可以告诉您要使用的主题/分区:KafkaConsumer#assign() (你指定你想要的分区和你开始的偏移量)和订阅(你加入一个消费者组,分区/偏移量将由组协调器根据同一消费者组中的消费者动态分配,并可能在运行时发生变化)

在这两种情况下,您都需要轮询来接收数据。

参见 https://kafka.apache.org/0110/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html ,尤其是 Consumer Groups and Topic SubscriptionsManual Partition Assignment

段落

关于java - 消费者。如何指定要读取的分区? [卡夫卡],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46492707/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com