[[CEP-CamelCEP]]
Camel CEP
---------

http://en.wikipedia.org/wiki/Complex_event_processing[Complex Event
Processing] or
http://en.wikipedia.org/wiki/Event_stream_processing[Event Stream
Processing] are approaches of processing streams of events, usually from
multiple sources.

One approach to CEP with Camel is to use the link:esper.html[Esper
endpoint] then use Esper's SQL-like DSL for working with event streams.

Another approach to CEP with Camel is to use link:rx.html[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). link:rx.html[Camel RX]
uses the https://github.com/Netflix/RxJava/wiki[RxJava]
http://netflix.github.com/RxJava/javadoc/[API] which is a JVM port of
the https://rx.codeplex.com/[Reactive Extensions]

[[CEP-CEPwithCamelRX]]
CEP with link:rx.html[Camel RX]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

link:rx.html[Camel RX] provides various ways to get an
http://netflix.github.com/RxJava/javadoc/rx/Observable.html[Observable<T>]
which provides the typesafe DSL for processing events on a single
stream.

Once you have an
http://netflix.github.com/RxJava/javadoc/rx/Observable.html[Observable<T>]
you can then:

* https://github.com/Netflix/RxJava/wiki/Filtering-Operators[filter
events]
*
https://github.com/Netflix/RxJava/wiki/Transformative-Operators[transform
events]
* https://github.com/Netflix/RxJava/wiki/Combinatorial-Operators[combine
event streams]
* https://github.com/Netflix/RxJava/wiki/Utility-Operators[other utility
methods]
