Hi Christian, that's really cool, the Reactor projects brings about a nice API and a lot of functionality out of the box. I think the main thing with Camel being fully reactive is to find out how to do that with all the EIPs supported.
I think you might find it interesting that Nicola created a way to integrate reactive systems with Camel with camel-reactive-streams[1], you can find out more in the talk he did recently[2]. zoran [1] https://github.com/apache/camel/blob/master/components/camel-reactive-streams/src/main/docs/reactive-streams-component.adoc [2] https://www.nicolaferraro.me/2017/06/20/jbcnconf-barcelona-integrating-applications-the-reactive-way/ On Tue, Jun 27, 2017 at 9:08 AM, Christian Schneider <ch...@die-schneider.net> wrote: > I recently looked into ways to combine messaging and streaming on OSGi. So > the following is a bit OSGi specific regarding finding components but I > think this can also be done for non OSGi usage. > > Interestingly the best reactive streams solution I found for my case was > Reactor (by Pivotal) which is the core of spring 5. It works out of the box > on OSGi and only has a single dependency. > The next thing was how to combine this with messaging in a loosely coupled > way. I really like Apache Camel but I think it is not up to date any more > and also acquired a lot of weight over time (especially in camel-core). So I > was looking into providing a light weight component API and combine it with > Reactor. > > The result is this project: > > https://github.com/cschneider/streaming-osgi/tree/master/reactortest > > This is the Component API: > https://github.com/cschneider/streaming-osgi/blob/master/reactortest/src/main/java/component/api/MComponent.java > Actually I am unsure if the converter must be part of the API but this is > the current state. > > I created some POC components for Mqtt, EventAdmin and Mail. > > and finally two examples: > Listen on eventadmin topic, log and forward to other topic: > https://github.com/cschneider/streaming-osgi/blob/master/reactortest/src/main/java/reactortest/ExampleEventAdmin.java > > Listen to mqtt, compute average over sliding window and forward to other > topic: > https://github.com/cschneider/streaming-osgi/blob/master/reactortest/src/main/java/reactortest/MqttExampleComponent.java > > I think there is a lot of potential in Reactor and also in messaging > components that do not couple your code to the technology. > I would be happy about any feedback on the prototype. Beware the code is not > yet split into bundles but I hope the intention is still visible. > > Best > > Christian > > -- > Christian Schneider > http://www.liquid-reality.de > > Open Source Architect > http://www.talend.com > -- Zoran Regvart