From eccfb4c850438eb1c4db7bd5ef468690337c07cf Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Fri, 8 Nov 2019 10:17:14 -0500 Subject: [PATCH] Don't delay batch offset commits When `idleBetweenPolls` was set, the sleep was done after invoking the listener and before calling `pollAndInvoke()` again. This delays committing the offsets for ack modes other than `RECORD`. Move the sleep to after committing the offsets and before the next `poll()`. --- .../kafka/listener/KafkaMessageListenerContainer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-kafka/src/main/java/org/springframework/kafka/listener/KafkaMessageListenerContainer.java b/spring-kafka/src/main/java/org/springframework/kafka/listener/KafkaMessageListenerContainer.java index 85d20de2..a07104d7 100644 --- a/spring-kafka/src/main/java/org/springframework/kafka/listener/KafkaMessageListenerContainer.java +++ b/spring-kafka/src/main/java/org/springframework/kafka/listener/KafkaMessageListenerContainer.java @@ -888,7 +888,6 @@ public class KafkaMessageListenerContainer // NOSONAR line count while (isRunning()) { try { pollAndInvoke(); - idleBetweenPollIfNecessary(); } catch (@SuppressWarnings(UNUSED) WakeupException e) { // Ignore, we're stopping or applying immediate foreign acks @@ -929,6 +928,7 @@ public class KafkaMessageListenerContainer // NOSONAR line count if (!this.autoCommit && !this.isRecordAck) { processCommits(); } + idleBetweenPollIfNecessary(); if (this.seeks.size() > 0) { processSeeks(); }