我实现了一个简单的Kafka使用者,它实现了AcknowledgingMessageListener。有确认.acknowledge();在onMessage方法中,每当一切顺利或只有可恢复的异常时调用它。一切都适用于这种情况。
但是事情可能会出错,并且可能会抛出一个错误(我没有抓到),JVM可能会在确认之前在onMessage方法中崩溃等.acknowledge();被叫了。
因此应用程序崩溃但重启后它没有收到受影响的Kafka主题的任何消息。即使Kafka重启也无济于事,应用程序服务器重启也无济于事等,但其他主题运行良好,Kafka不会失败。
正确的Kafka使用者(或其他)配置在onMessage崩溃后让应用程序再次运行是什么?我想再次收到未确认的消息,然后是尚未读取的所有其他消息。手动确认很重要,我不想使用自动确认模式。
答案 0 :(得分:0)
这对我有所帮助:
server.properties
max.poll.interval.ms = 30000
session.timeout.ms = 40000