Java Kafka consumer卡在iterator.hasNext()上(实际上是暂停和恢复),即使主题中有大量消息可供使用
我正在开发一个分布式解决方案,其中两个使用者在同一使用者组下的两台不同服务器上运行,并使用3台机器的Kafka主题中的2个分区和3个复制因子。在我的consumer类(可调用的Java Kafka consumer卡在iterator.hasNext()上(实际上是暂停和恢复),即使主题中有大量消息可供使用,java,multithreading,apache-kafka,distributed-computing,apache-zookeeper,Java,Multithreading,Apache Kafka,Distributed Computing,Apache Zookeeper,我正在开发一个分布式解决方案,其中两个使用者在同一使用者组下的两台不同服务器上运行,并使用3台机器的Kafka主题中的2个分区和3个复制因子。在我的consumer类(可调用的)中,关键部分如下所示: @Override public Object call() throws Exception { ConsumerIterator<byte[], byte[]> it = stream.iterator(); try { wh
)中,关键部分如下所示:
@Override
public Object call() throws Exception {
ConsumerIterator<byte[], byte[]> it = stream.iterator();
try {
while (it.hasNext()){
byte[] message = it.next().message();
// other code here
}
} catch (Throwable e) {
e.printStackTrace();
}
log.error("Shutting down Thread: " + streamNumber + ", kafka consumer offline!!!");
}
消费者服务器都是在Linux上运行的32线程64 GB机器
你知道是什么引起的吗?提前谢谢。如果您需要其他信息或有任何不清楚的地方,请告诉我
更新:我已经尝试将分区数量从2个增加到32个,并且在我的每个消费者服务器中产生了16个消费者线程,每个消费者线程使用一个分区。然而,这似乎并没有改变这种行为。我注意到同样的暂停和恢复周期
我遇到了完全相同的问题。在浏览决议的时候,我遇到了卡夫卡在网站上已经报道过的问题 看起来它们已在0.9.0.1版本中解析。我将尝试用这个版本更新库。如果我能用新的jar解决这个问题,我将进行更新。同时,你也可以尝试同样的方法。 ~z~干杯
group.id=ct_job_backfill
zookeeper.session.timeout.ms=1000
zookeeper.sync.time.ms=200
auto.commit.enable=true
auto.offset.reset=smallest
rebalance.max.retries=20
rebalance.backoff.ms=2000
topic.name=contentTaskProd