From 10a2609862f6ea2541198c79acf33ffad3c64edf Mon Sep 17 00:00:00 2001 From: ivamly Date: Thu, 16 Jan 2025 23:00:08 +0300 Subject: [PATCH 1/2] GH-3697: Optimize a MessagingMessageListenerAdapter returning null from the DelegatingInvocableHandler.invoke() Signed-off-by: ivamly --- .../listener/adapter/DelegatingInvocableHandler.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/spring-kafka/src/main/java/org/springframework/kafka/listener/adapter/DelegatingInvocableHandler.java b/spring-kafka/src/main/java/org/springframework/kafka/listener/adapter/DelegatingInvocableHandler.java index 3770dc6eed..594a1c2b17 100644 --- a/spring-kafka/src/main/java/org/springframework/kafka/listener/adapter/DelegatingInvocableHandler.java +++ b/spring-kafka/src/main/java/org/springframework/kafka/listener/adapter/DelegatingInvocableHandler.java @@ -167,6 +167,7 @@ public boolean isAsyncReplies() { * @throws Exception raised if no suitable argument resolver can be found, * or the method raised an exception. */ + @Nullable public Object invoke(Message message, Object... providedArgs) throws Exception { //NOSONAR Class payloadClass = message.getPayload().getClass(); InvocableHandlerMethod handler = getHandlerForPayload(payloadClass); @@ -186,8 +187,12 @@ public Object invoke(Message message, Object... providedArgs) throws Exceptio else { result = handler.invoke(message, providedArgs); } - Expression replyTo = this.handlerSendTo.get(handler); - return new InvocationResult(result, replyTo, this.handlerReturnsMessage.get(handler)); + if (result != null) { + Expression replyTo = this.handlerSendTo.get(handler); + return new InvocationResult(result, replyTo, this.handlerReturnsMessage.get(handler)); + } else { + return null; + } } /** From e1ca0c07140eac782b70161855ebbc4a0f8ae81c Mon Sep 17 00:00:00 2001 From: ivamly Date: Thu, 16 Jan 2025 23:00:08 +0300 Subject: [PATCH 2/2] GH-3697: Make DelegatingInvocableHandler.invoke() return null Signed-off-by: ivamly --- .../kafka/listener/adapter/DelegatingInvocableHandler.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/spring-kafka/src/main/java/org/springframework/kafka/listener/adapter/DelegatingInvocableHandler.java b/spring-kafka/src/main/java/org/springframework/kafka/listener/adapter/DelegatingInvocableHandler.java index 594a1c2b17..cb225e2b27 100644 --- a/spring-kafka/src/main/java/org/springframework/kafka/listener/adapter/DelegatingInvocableHandler.java +++ b/spring-kafka/src/main/java/org/springframework/kafka/listener/adapter/DelegatingInvocableHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2024 the original author or authors. + * Copyright 2016-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -55,6 +55,7 @@ * * @author Gary Russell * @author Wang Zhiyang + * @author Ivan Malutin * */ public class DelegatingInvocableHandler { @@ -190,7 +191,8 @@ public Object invoke(Message message, Object... providedArgs) throws Exceptio if (result != null) { Expression replyTo = this.handlerSendTo.get(handler); return new InvocationResult(result, replyTo, this.handlerReturnsMessage.get(handler)); - } else { + } + else { return null; } }