卡夫卡经常重启消费者时会出现问题

时间:2016-10-26 22:07:13

标签: java multithreading apache-kafka kafka-consumer-api

我有一个每分钟创建五个线程的管道,每个线程执行以下操作:

  1. 使用ZookeeperConsumerConnector创建KafkaConsumer
  2. 消费消息直到一分钟过去
  3. 一旦分钟结束,就会杀死线程并重复该过程。请注意,所有线程都使用相同的 groupId

    过了一段时间,我会说在30分钟到几个小时之间,我开始看到每个线程的这个异常并且他们停止消费消息:

    sycedRebalance期间出现

    错误(kafka.consumer.ZookeeperConsumerConnector) kafka.common.ConsumerRebalanceFailedException:在kafka.consumer.ZookeeperConsumerConnector $ ZKRebalancerListener.syncedRebalance(ZookeeperConsumerConnector.scala:633)重试4次后无法重新平衡     at kafka.consumer.ZookeeperConsumerConnector $ ZKRebalancerListener $$ anon $ 1.run(ZookeeperConsumerConnector.scala:551)

    即使在所有线程被杀死,Kafka消费者关闭并创建了新线程之后,这种情况仍在继续发生。

    如果我运行这个让线程永远存在,那么它似乎没有任何问题。

    Kafka是否应该支持这样的案例,其中一段时间​​后不断创建和删除给定groupId的消费者?

    我正在使用Kafka 0.8.2.1

    谢谢!

1 个答案:

答案 0 :(得分:0)

似乎这个问题的解决方案是升级Kafka,因为这是Kafka 0.8。+的已知问题。 这应该在0.9。+中修复,更多细节在这里:https://github.com/IBMStreams/streamsx.messaging/issues/125