Skip to content

Commit 9a35815

Browse files
committed
* Emit subscribedSignal value after .subscribe(subscriber)
instead of `doOnSubscribe` * Check for `this.processor.hasDownstreams()` before emitting such an event
1 parent 368ad5c commit 9a35815

File tree

1 file changed

+5
-7
lines changed

1 file changed

+5
-7
lines changed

spring-integration-core/src/main/java/org/springframework/integration/channel/FluxMessageChannel.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616

1717
package org.springframework.integration.channel;
1818

19-
import java.util.concurrent.atomic.AtomicBoolean;
20-
2119
import org.reactivestreams.Publisher;
2220
import org.reactivestreams.Subscriber;
2321

@@ -47,29 +45,29 @@ public class FluxMessageChannel extends AbstractMessageChannel
4745

4846
private final FluxSink<Message<?>> sink;
4947

50-
private final AtomicBoolean subscribed = new AtomicBoolean();
51-
5248
private final ReplayProcessor<Boolean> subscribedSignal = ReplayProcessor.create(1);
5349

5450
public FluxMessageChannel() {
5551
this.processor = EmitterProcessor.create(1, false);
5652
this.sink = this.processor.sink(FluxSink.OverflowStrategy.BUFFER);
57-
this.subscribedSignal.subscribe(this.subscribed::set);
5853
}
5954

6055
@Override
6156
protected boolean doSend(Message<?> message, long timeout) {
62-
Assert.state(this.subscribed.get(),
57+
Assert.state(this.processor.hasDownstreams(),
6358
() -> "The [" + this + "] doesn't have subscribers to accept messages");
6459
this.sink.next(message);
6560
return true;
6661
}
6762

6863
@Override
6964
public void subscribe(Subscriber<? super Message<?>> subscriber) {
70-
this.processor.doOnSubscribe((s) -> this.subscribedSignal.onNext(true))
65+
this.processor
7166
.doFinally((s) -> this.subscribedSignal.onNext(this.processor.hasDownstreams()))
7267
.subscribe(subscriber);
68+
if (this.processor.hasDownstreams()) {
69+
this.subscribedSignal.onNext(true);
70+
}
7371
}
7472

7573
@Override

0 commit comments

Comments
 (0)