You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Reactive Camel

The camel-rx library provides Camel support for the Reactive Extensions (RX) using the RxJava library.

You can think of RX as providing an API similar to Java 8 / Groovy / Scala like API collections (methods like filter, forEach, map, flatMap etc) - but which operates on a stream of events rather than a collection. So you could think of RX as like working with asynchronous push based collections (rather than the traditional synchronous pull based collections).

In RX, if you have an Observable<T> which behaves quite like a Collection<T> in Java 8 so you can filter/map/concat and so forth. The Observable<T> then acts as a typesafe composable API for working with asynchronous events.

You can then create an Observable<Message> from any endpoint using the ReactiveCamel helper class.

import org.apache.camel.rx.*;

ReactiveCamel rx = new ReactiveCamel(camelContext);
Observable<Message> observable = rx.toObservable("activemq:MyMessages");

// we can now call filter/map/concat etc
filtered = observable.filter(m -> m.getHeader("foo") != null); 
  • No labels