确认后恢复Kafka消费者.acknowledge();没被叫

时间:2017-11-02 15:37:52

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

我实现了一个简单的Kafka使用者,它实现了AcknowledgingMessageListener。有确认.acknowledge();在onMessage方法中,每当一切顺利或只有可恢复的异常时调用它。一切都适用于这种情况。

但是事情可能会出错,并且可能会抛出一个错误(我没有抓到),JVM可能会在确认之前在onMessage方法中崩溃等.acknowledge();被叫了。

因此应用程序崩溃但重启后它没有收到受影响的Kafka主题的任何消息。即使Kafka重启也无济于事,应用程序服务器重启也无济于事等,但其他主题运行良好,Kafka不会失败。

正确的Kafka使用者(或其他)配置在onMessage崩溃后让应用程序再次运行是什么?我想再次收到未确认的消息,然后是尚未读取的所有其他消息。手动确认很重要,我不想使用自动确认模式。

1 个答案:

答案 0 :(得分:0)

这对我有所帮助:

server.properties

max.poll.interval.ms = 30000

session.timeout.ms = 40000