diff --git a/spring-integration-core/src/main/java/org/springframework/integration/channel/MessageChannelReactiveUtils.java b/spring-integration-core/src/main/java/org/springframework/integration/channel/MessageChannelReactiveUtils.java index 2b11d1e090..797dcc1ca0 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/channel/MessageChannelReactiveUtils.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/channel/MessageChannelReactiveUtils.java @@ -73,7 +73,9 @@ public final class MessageChannelReactiveUtils { @SuppressWarnings("unchecked") private static Publisher> adaptPollableChannelToPublisher(PollableChannel inputChannel) { - return Mono.fromCallable(() -> (Message) inputChannel.receive(0)) + return Mono.>create(monoSink -> + monoSink.onRequest(value -> + monoSink.success((Message) inputChannel.receive(0)))) .subscribeOn(Schedulers.boundedElastic()) .repeatWhenEmpty(it -> it.delayElements(Duration.ofMillis(100))) // NOSONAR - magic .repeat();