Maven Central Continuous Integration Build License

Implementation of the MicroProfile Reactive Messaging specification

This project is an implementation of the (next to be) Eclipse MicroProfile Reactive Messaging specification - a CDI extension to build event-driven microservices and data streaming applications. It provides support for:

It also provides a way to inject streams into CDI beans, and so link your Reactive Messaging streams into CDI beans,or JAX-RS resources.

Getting started


See for details.

The build process requires Apache Maven and Java 8+ and can be performed using:

mvn clean install

How to start

The best way to start is to look at the examples/quickstart project. It's a Maven project listing the minimal set of dependencies and containing a single class:

package io.smallrye.reactive.messaging.quickstart;

import org.eclipse.microprofile.reactive.messaging.Incoming;
import org.eclipse.microprofile.reactive.messaging.Outgoing;
import org.eclipse.microprofile.reactive.streams.operators.PublisherBuilder;
import org.eclipse.microprofile.reactive.streams.operators.ReactiveStreams;

import javax.enterprise.context.ApplicationScoped;

public class QuickStart {

  public static void main(String[] args) {

  public PublisherBuilder<String> source() {
    return ReactiveStreams.of("hello", "with", "SmallRye", "reactive", "message");

  public String toUpperCase(String payload) {
    return payload.toUpperCase();

  public PublisherBuilder<String> filter(PublisherBuilder<String> input) {
    return input.filter(item -> item.length() > 4);

  public void sink(String word) {
    System.out.println(">> " + word);


Run the project with: mvn compile exec:java -Dexec.mainClass=io.smallrye.reactive.messaging.quickstart.QuickStart:


Built With


Please read for details, and the process for submitting pull requests.


The project is sponsored by Red Hat.


This project is licensed under the Apache License 2.0 - see the LICENSE file for details.