Skip to content

Commit 8d7ce48

Browse files
authored
GH-3695: Fix MessagingMessageListenerAdapter to not ack when sync (#3696)
Fixes: #3695 Even if th `@KafkaHandler` method is `void` the `DelegatingInvocableHandler` returns an empty `InvocationResult`. That triggers a `MessagingMessageListenerAdapter.handleResult()` logic. On the `completableFutureResult.whenComplete()` we call `acknowledge()` which is not expected for `void` POJO methods. * Fix `MessagingMessageListenerAdapter` to check for `isAsyncReplies()` before calling `acknowledge()` This is a regression after #3528
1 parent c9e7edc commit 8d7ce48

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

spring-kafka/src/main/java/org/springframework/kafka/listener/adapter/MessagingMessageListenerAdapter.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,9 @@
8080
import org.springframework.util.TypeUtils;
8181

8282
/**
83-
* An abstract {@link org.springframework.kafka.listener.MessageListener} adapter
83+
* An abstract {@link MessageListener} adapter
8484
* providing the necessary infrastructure to extract the payload of a
85-
* {@link org.springframework.messaging.Message}.
85+
* {@link Message}.
8686
*
8787
* @param <K> the key type.
8888
* @param <V> the value type.
@@ -205,9 +205,9 @@ public void setMessageConverter(RecordMessageConverter messageConverter) {
205205

206206
/**
207207
* Return the {@link MessagingMessageConverter} for this listener,
208-
* being able to convert {@link org.springframework.messaging.Message}.
208+
* being able to convert {@link Message}.
209209
* @return the {@link MessagingMessageConverter} for this listener,
210-
* being able to convert {@link org.springframework.messaging.Message}.
210+
* being able to convert {@link Message}.
211211
*/
212212
protected final RecordMessageConverter getMessageConverter() {
213213
return this.messageConverter;
@@ -550,7 +550,9 @@ else if (!(result instanceof CompletableFuture<?>)) {
550550
try {
551551
if (t == null) {
552552
asyncSuccess(r, replyTopic, source, messageReturnType);
553-
acknowledge(acknowledgment);
553+
if (isAsyncReplies()) {
554+
acknowledge(acknowledgment);
555+
}
554556
}
555557
else {
556558
Throwable cause = t instanceof CompletionException ? t.getCause() : t;

0 commit comments

Comments
 (0)