Camel CEP

Complex Event Processing or Event Stream Processing are approaches of processing streams of events, usually from multiple sources.

One approach to CEP with Camel is to use the Esper endpoint then use Esper's SQL-like DSL for working with event streams.

Another approach to CEP with Camel is to use Camel RX which provides a typesafe DSL in Java, Scala, Groovy, clojure for processing events in a natural collection-like way (while being high performance and asynchronous under the covers). Camel RX uses the RxJava API which is a JVM port of the Reactive Extensions

CEP with Camel RX

Camel RX provides various ways to get an Observable<T> which provides the typesafe DSL for processing events on a single stream.

Once you have an Observable<T> you can then:

Note that at the time of writing, some of the RX APIs have not yet been ported to RxJava so that some of the core CEP functions are not yet implemented. e.g. these functions will really complete RxJava's CEP coverage:

So until RxJava hits 0.7 milestone there is limited support for combining streams; but that should hopefully be fixed soon. I'm sure the RxJava folks would welcome contributions on those issues (smile)

  • No labels