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
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