Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 卡夫卡列斯汀停了吗;“优雅地”;应用程序关闭时,或者为什么不关闭?_Java_Spring Boot_Apache Kafka - Fatal编程技术网

Java 卡夫卡列斯汀停了吗;“优雅地”;应用程序关闭时,或者为什么不关闭?

Java 卡夫卡列斯汀停了吗;“优雅地”;应用程序关闭时,或者为什么不关闭?,java,spring-boot,apache-kafka,Java,Spring Boot,Apache Kafka,我有一个应用程序,它使用一个主题,根据内部版本号重新排序消息(出于我不想讨论的原因),然后在另一个主题上发布消息。因为我认为我不能用Streams应用程序实现这一点,所以我用@KafkaListener和随后的kafkaTemplate.sendDefault实现了这一点 应用程序运行时,一切正常。但当我关闭应用程序时,我仍然会发布所有收到的消息,但似乎侦听器还没有提交偏移量。因此,我的应用程序的另一个仍在运行的实例再次接收消息,并将其第二次发布到另一个主题 我已经尝试设置spring.kafk

我有一个应用程序,它使用一个主题,根据内部版本号重新排序消息(出于我不想讨论的原因),然后在另一个主题上发布消息。因为我认为我不能用Streams应用程序实现这一点,所以我用@KafkaListener和随后的kafkaTemplate.sendDefault实现了这一点

应用程序运行时,一切正常。但当我关闭应用程序时,我仍然会发布所有收到的消息,但似乎侦听器还没有提交偏移量。因此,我的应用程序的另一个仍在运行的实例再次接收消息,并将其第二次发布到另一个主题

我已经尝试设置
spring.kafka.listener.ack-mode:RECORD
,并减少了
自动提交间隔,但仍在进行

有人有主意吗?
或者我必须手动篡改ListenerContainer吗?

如何关闭应用程序?它是通过unix风格的启动脚本启动和停止的。我可能误解了细节,但每个主题消费者都会收到一条主题消息。因此,如果您有多个使用者接收到消息并将其发布到下一个主题,那么您应该预计N个使用者将发布到第二个主题N次脚本是否终止-9,即强制终止或正常关闭?脚本正常关闭。消费者都在同一消费者组中,并且消息具有唯一的消息密钥,因此每个主题分区仅由一个消费者使用。