
Kafka
消费者——从
Kafka
读取数据
|
71
4.11
独立消费者
——
为什么以及怎样使用没有
群组的消费者
到目前为止,我们讨论了消费者群组,分区被自动分配给群组里的消费者,在群组里新增
或移除消费者时自动触发再均衡。通常情况下,这些行为刚好是你所需要的,不过有时候
你需要一些更简单的东西。比如,你可能只需要一个消费者从一个主题的所有分区或者某
个特定的分区读取数据。这个时候就不需要消费者群组和再均衡了,只需要把主题或者分
区分配给消费者,然后开始读取消息并提交偏移量。
如果是这样的话,就不需要
订阅
主题,取而代之的是为自己
分配
分区。一个消费者可以订
阅主题(并加入消费者群组),或者为自己分配分区,但不能同时做这两件事情。
下面的例子演示了一个消费者是如何为自己分配分区并从分区里读取消息的:
List<PartitionInfo> partitionInfos = null;
partitionInfos = consumer.partitionsFor("topic");
➊
if (partitionInfos != null) {
for (PartitionInfo partition : partitionInfos)
partitions.add(new TopicPartition(partition.topic(),
partition.partition()));
consumer.assign(partitions);
➋
while (true) {
ConsumerRecords<String, ...