Emitting JAX-RS Messages into MicroProfile Reactive Messaging Channels 📎
import org.eclipse.microprofile.reactive.messaging.Incoming;
import org.eclipse.microprofile.reactive.messaging.Outgoing;
public class HelloListener {
@Incoming("hello")
@Outgoing("confirmed")
public String onHello(String hello) {
return "confirmed: " + hello;
}
}
Messages consumed by Jakarta RESTful Web Services / Java API for RESTful Web Services
can be ingested into the system with the injected Emitter
qualified with the @Channel annotation.
After sending the String to the Emitter
, the message becomes available in the channel and can be consumed as method parameter or sent to Kafka topic:
import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
import org.eclipse.microprofile.reactive.messaging.Channel;
import org.eclipse.microprofile.reactive.messaging.Emitter;
@Path("/hello")
public class HelloResource {
@Inject
@Channel("hello")
Emitter<String> emitter;
@POST
@Consumes(MediaType.TEXT_PLAIN)
public void forward(String message) {
emitter.send(message);
}
}
See it in action, and from scratch in 7 minutes: