在运行应用程序时创建分区时,Kafka 0.10.0.0客户端消费者数据丢失

时间:2017-01-11 08:06:10

标签: apache-kafka kafka-consumer-api

我在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

2 个答案:

答案 0 :(得分:0)

消费者仅使用分配的两个分区(test_a - 0,1)来使用数据。在现有主题中创建另外3个分区后。新数据可能会被推送到其他分区(2,3,4)。因此,消费者将不会收到该消息。

答案 1 :(得分:0)

正在发生的事情是,您生成的消息将在消费者重新平衡之前发送到其中一个新分区,并为其分配这些新分区。将新分区分配给您的使用者时,它不会获取该消息,因为您应将消费者配置auto.offset.reset设置为latest(默认值)。如果您将此配置设置为最早,您将收到消息。