Java 卡夫卡列斯汀停了吗;“优雅地”;应用程序关闭时,或者为什么不关闭?
我有一个应用程序,它使用一个主题,根据内部版本号重新排序消息(出于我不想讨论的原因),然后在另一个主题上发布消息。因为我认为我不能用Streams应用程序实现这一点,所以我用@KafkaListener和随后的kafkaTemplate.sendDefault实现了这一点 应用程序运行时,一切正常。但当我关闭应用程序时,我仍然会发布所有收到的消息,但似乎侦听器还没有提交偏移量。因此,我的应用程序的另一个仍在运行的实例再次接收消息,并将其第二次发布到另一个主题 我已经尝试设置Java 卡夫卡列斯汀停了吗;“优雅地”;应用程序关闭时,或者为什么不关闭?,java,spring-boot,apache-kafka,Java,Spring Boot,Apache Kafka,我有一个应用程序,它使用一个主题,根据内部版本号重新排序消息(出于我不想讨论的原因),然后在另一个主题上发布消息。因为我认为我不能用Streams应用程序实现这一点,所以我用@KafkaListener和随后的kafkaTemplate.sendDefault实现了这一点 应用程序运行时,一切正常。但当我关闭应用程序时,我仍然会发布所有收到的消息,但似乎侦听器还没有提交偏移量。因此,我的应用程序的另一个仍在运行的实例再次接收消息,并将其第二次发布到另一个主题 我已经尝试设置spring.kafk
spring.kafka.listener.ack-mode:RECORD
,并减少了自动提交间隔,但仍在进行
有人有主意吗?
或者我必须手动篡改ListenerContainer吗?如何关闭应用程序?它是通过unix风格的启动脚本启动和停止的。我可能误解了细节,但每个主题消费者都会收到一条主题消息。因此,如果您有多个使用者接收到消息并将其发布到下一个主题,那么您应该预计N个使用者将发布到第二个主题N次脚本是否终止-9,即强制终止或正常关闭?脚本正常关闭。消费者都在同一消费者组中,并且消息具有唯一的消息密钥,因此每个主题分区仅由一个消费者使用。