diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/InvocableHandlerMethod.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/InvocableHandlerMethod.java index aad9384af25..18f17b5a27f 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/InvocableHandlerMethod.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/InvocableHandlerMethod.java @@ -205,15 +205,17 @@ public class InvocableHandlerMethod extends HandlerMethod { if (reactiveAdapter.isNoValue()) { return true; } - Type parameterType = returnType.getGenericParameterType(); - if (parameterType instanceof ParameterizedType) { - ParameterizedType type = (ParameterizedType) parameterType; - if (type.getActualTypeArguments().length == 1) { - return Void.class.equals(type.getActualTypeArguments()[0]); - } + } + Type parameterType = returnType.getGenericParameterType(); + if (parameterType instanceof ParameterizedType) { + ParameterizedType type = (ParameterizedType) parameterType; + if (type.getActualTypeArguments().length == 1) { + return Void.class.equals(type.getActualTypeArguments()[0]); } } - return false; + Method method = returnType.getMethod(); + return method != null && KotlinDetector.isSuspendingFunction(method) && + Void.TYPE.equals(returnType.getParameterType()); } }