Skip to content

Commit f531bf2

Browse files
committed
GH-124: Fix auto-wiring ambiguity in the ZeroMqSupplierConfiguration
Fixes: #124 Also use `toReactivePublisher(true)` to avoid manual lifecycle management.
1 parent 34892ae commit f531bf2

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

Diff for: supplier/spring-zeromq-supplier/src/main/java/org/springframework/cloud/fn/supplier/zeromq/ZeroMqSupplierConfiguration.java

+11-10
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.function.Consumer;
2020
import java.util.function.Supplier;
2121

22+
import org.reactivestreams.Publisher;
2223
import org.zeromq.SocketType;
2324
import org.zeromq.ZContext;
2425
import org.zeromq.ZMQ;
@@ -28,7 +29,7 @@
2829
import org.springframework.boot.autoconfigure.AutoConfiguration;
2930
import org.springframework.boot.context.properties.EnableConfigurationProperties;
3031
import org.springframework.context.annotation.Bean;
31-
import org.springframework.integration.channel.FluxMessageChannel;
32+
import org.springframework.integration.dsl.IntegrationFlow;
3233
import org.springframework.integration.zeromq.inbound.ZeroMqMessageProducer;
3334
import org.springframework.messaging.Message;
3435
import org.springframework.messaging.support.GenericMessage;
@@ -37,21 +38,19 @@
3738
* A supplier auto-configuration that receives data from ZeroMQ.
3839
*
3940
* @author Daniel Frey
40-
* @since 3.1.0
41+
* @author Artem Bilan
4142
*/
4243
@AutoConfiguration
4344
@EnableConfigurationProperties(ZeroMqSupplierProperties.class)
4445
public class ZeroMqSupplierConfiguration {
4546

46-
private FluxMessageChannel output = new FluxMessageChannel();
47-
4847
@Bean
4948
public ZContext zContext() {
5049
return new ZContext();
5150
}
5251

5352
@Bean
54-
public ZeroMqMessageProducer adapter(ZeroMqSupplierProperties properties, ZContext zContext,
53+
public ZeroMqMessageProducer zeroMqSupplierMessageProducer(ZeroMqSupplierProperties properties, ZContext zContext,
5554
@Autowired(required = false) Consumer<ZMQ.Socket> socketConfigurer) {
5655

5756
ZeroMqMessageProducer zeroMqMessageProducer = new ZeroMqMessageProducer(zContext, properties.getSocketType());
@@ -70,15 +69,17 @@ else if (properties.getBindPort() > 0) {
7069
if (socketConfigurer != null) {
7170
zeroMqMessageProducer.setSocketConfigurer(socketConfigurer);
7271
}
73-
zeroMqMessageProducer.setOutputChannel(this.output);
74-
zeroMqMessageProducer.setAutoStartup(false);
75-
7672
return zeroMqMessageProducer;
7773
}
7874

7975
@Bean
80-
public Supplier<Flux<Message<?>>> zeromqSupplier(ZeroMqMessageProducer adapter) {
81-
return () -> Flux.from(this.output).doOnSubscribe((subscription) -> adapter.start());
76+
Publisher<Message<Object>> zeroMqSupplierFlow(ZeroMqMessageProducer zeroMqSupplierMessageProducer) {
77+
return IntegrationFlow.from(zeroMqSupplierMessageProducer).toReactivePublisher(true);
78+
}
79+
80+
@Bean
81+
public Supplier<Flux<Message<?>>> zeromqSupplier(Publisher<Message<Object>> zeroMqSupplierFlow) {
82+
return () -> Flux.from(zeroMqSupplierFlow);
8283
}
8384

8485
}

0 commit comments

Comments
 (0)