【发布时间】:2018-09-12 19:29:40
【问题描述】:
我一直在玩弄 Zookeeper 和 Kafka 的基本设置来学习如何使用它,但我在消费者方面遇到了麻烦。当 Kafka 不可用时,对 poll() 方法的调用会挂起,直到它重新联机。
Kafka 版本:0.10.1.0
我的代码如下所示:
KafkaConsumer<String, byte[]> consumer = new KafkaConsumer<>(props);
consumer.subscribe(topics);
while (!stopped) {
// If by any reason Kafka is not available this call will hang
// until Kafka is back online.
records = consumer.poll(timeout);
for (ConsumerRecord<String, byte[]> record : records) {
process(record);
}
Thread.sleep(sleepTime);
}
我了解到,当我调用 poll() 时,消费者将无限期地尝试连接到 Kafka,直到它重新联机或直到调用 consumer.wakeup()。
我希望当 Kafka 不在线时代码的行为有所不同。 从不存在的 kafka 进行轮询时,是否有任何方法可以限制消费者重试或使其失败?
【问题讨论】:
标签: java apache-kafka kafka-consumer-api