Skip to content

Instantly share code, notes, and snippets.

@itzg
Last active January 29, 2021 22:13
Show Gist options
  • Save itzg/d81b1ac9545b65f26da314b56875c5e9 to your computer and use it in GitHub Desktop.
Save itzg/d81b1ac9545b65f26da314b56875c5e9 to your computer and use it in GitHub Desktop.
What happens when two smallrye incoming methods declared without broadcast
import io.smallrye.mutiny.Multi;
import java.time.Duration;
import java.time.Instant;
import javax.enterprise.context.ApplicationScoped;
import org.eclipse.microprofile.reactive.messaging.Incoming;
import org.eclipse.microprofile.reactive.messaging.Outgoing;
@ApplicationScoped
public class Chatty {
@Outgoing("ticks")
//Uncomment the following to declare the interactions correctly
//@Broadcast
public Multi<String> ticker() {
return Multi.createFrom().ticks().every(Duration.ofSeconds(1))
.onItem().transform(tick -> Instant.now().toString());
}
@Incoming("ticks")
public void handler1(String tick) {
System.out.printf("handler1: %s%n", tick);
}
@Incoming("ticks")
public void handler2(String tick) {
System.out.printf("handler2: %s%n", tick);
}
}
@itzg
Copy link
Author

itzg commented Jan 29, 2021

App fails to start with

	Suppressed: io.smallrye.reactive.messaging.wiring.TooManyDownstreamCandidatesException: 'PublisherMethod{method:'ticker', outgoing:'ticks'}' supports a single downstream consumer, but found 2: [SubscriberMethod{method:'handler1', incoming:'ticks'}, SubscriberMethod{method:'handler2', incoming:'ticks'}]. You may want to enable broadcast using '@Broadcast' on the method PublisherMethod{method:'ticker', outgoing:'ticks'}.
		at io.smallrye.reactive.messaging.wiring.Wiring$PublisherMediatorComponent.validate(Wiring.java:535)
		at io.smallrye.reactive.messaging.wiring.Graph.<init>(Graph.java:69)
		at io.smallrye.reactive.messaging.wiring.Wiring.resolve(Wiring.java:151)
		at io.smallrye.reactive.messaging.wiring.Wiring_ClientProxy.resolve(Wiring_ClientProxy.zig:166)
		at io.smallrye.reactive.messaging.extension.MediatorManager.start(MediatorManager.java:165)
		... 23 more

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment