diff --git a/supplier/spring-xmpp-supplier/src/main/java/org/springframework/cloud/fn/supplier/xmpp/XmppSupplierConfiguration.java b/supplier/spring-xmpp-supplier/src/main/java/org/springframework/cloud/fn/supplier/xmpp/XmppSupplierConfiguration.java index 34d89ccf..b6454382 100644 --- a/supplier/spring-xmpp-supplier/src/main/java/org/springframework/cloud/fn/supplier/xmpp/XmppSupplierConfiguration.java +++ b/supplier/spring-xmpp-supplier/src/main/java/org/springframework/cloud/fn/supplier/xmpp/XmppSupplierConfiguration.java @@ -19,28 +19,27 @@ package org.springframework.cloud.fn.supplier.xmpp; import java.util.function.Supplier; import org.jivesoftware.smack.XMPPConnection; +import org.reactivestreams.Publisher; import reactor.core.publisher.Flux; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.fn.common.xmpp.XmppConnectionFactoryConfiguration; import org.springframework.context.annotation.Bean; -import org.springframework.integration.channel.FluxMessageChannel; +import org.springframework.integration.dsl.IntegrationFlow; import org.springframework.integration.xmpp.inbound.ChatMessageListeningEndpoint; import org.springframework.messaging.Message; /** - * A source module that receives data from ZeroMQ. + * A auto-configuration for XMPP supplier. * * @author Daniel Frey - * @since 4.0.0 + * @author Artem Bilan */ @AutoConfiguration(after = XmppConnectionFactoryConfiguration.class) @EnableConfigurationProperties(XmppSupplierProperties.class) public class XmppSupplierConfiguration { - private final FluxMessageChannel output = new FluxMessageChannel(); - @Bean public ChatMessageListeningEndpoint chatMessageListeningEndpoint(XMPPConnection xmppConnection, XmppSupplierProperties properties) { @@ -52,15 +51,17 @@ public class XmppSupplierConfiguration { } chatMessageListeningEndpoint.setStanzaFilter(properties.getStanzaFilter()); - chatMessageListeningEndpoint.setOutputChannel(this.output); - chatMessageListeningEndpoint.setAutoStartup(false); - return chatMessageListeningEndpoint; } @Bean - public Supplier>> xmppSupplier(ChatMessageListeningEndpoint chatMessageListeningEndpoint) { - return () -> Flux.from(this.output).doOnSubscribe((subscription) -> chatMessageListeningEndpoint.start()); + Publisher> xmppSupplierFlow(ChatMessageListeningEndpoint chatMessageListeningEndpoint) { + return IntegrationFlow.from(chatMessageListeningEndpoint).toReactivePublisher(true); + } + + @Bean + public Supplier>> xmppSupplier(Publisher> xmppSupplierFlow) { + return () -> Flux.from(xmppSupplierFlow); } }