我在pritam_group中有一个使用者,它已经分配了2个分区test_a-0和test_a-1。
当我在命令
下运行时bin/kafka-topics.sh --alter --zookeeper localhost:2181 --partitions 5 --topic test_a
然后是下一个命令
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test_a
并输入data ="这是消息"
然后我的消费者永远不会得到这个消息。不知道为什么? 并且我的消费者日志在几分钟之后得到这些行,而不是在我增加分区之后。
2017-01-11 08:51:31,631 +0100 INFO [org.apache.kafka.clients.consumer.internals.ConsumerCoordinator] (EJB default - 1) Revoking previously assigned partitions [test_a-1, test_a-0] for group pritam_group
2017-01-11 08:51:31,632 +0100 INFO [org.apache.kafka.clients.consumer.internals.AbstractCoordinator] (EJB default - 1) (Re-)joining group pritam_group
2017-01-11 08:51:31,636 +0100 INFO [org.apache.kafka.clients.consumer.internals.AbstractCoordinator] (EJB default - 1) Successfully joined group pritam_group with generation 2
2017-01-11 08:51:31,636 +0100 INFO [org.apache.kafka.clients.consumer.internals.ConsumerCoordinator] (EJB default - 1) Setting newly assigned partitions [test_a-1, test_a-3, test_a-2, test_a-4, test_a-0] for group pritam_group
答案 0 :(得分:0)
消费者仅使用分配的两个分区(test_a - 0,1)来使用数据。在现有主题中创建另外3个分区后。新数据可能会被推送到其他分区(2,3,4)。因此,消费者将不会收到该消息。
答案 1 :(得分:0)
正在发生的事情是,您生成的消息将在消费者重新平衡之前发送到其中一个新分区,并为其分配这些新分区。将新分区分配给您的使用者时,它不会获取该消息,因为您应将消费者配置auto.offset.reset设置为latest(默认值)。如果您将此配置设置为最早,您将收到消息。