Thank you for providing this as in a month I have a task to look at something similar. I have been playing with how to make our application more message based and resilient. Other good libraries I have seen and was looking forward to playing with were ActiveMQ Artemis for messaging. I like how it is embeddable, clusterable and standards compatible it is. I also was looking into Pax Web's undertow implementation so I can keep all my components that use the OSGI httpservice but take advantage of the non-blocking handlers and message passing. Undertow got OSGI headers pulled in from a PR last week. I know Nick posted some reactive stuff he has been working on in Pentaho and Achim posted a vertx sample. I have looked at OSGI push streams in the past but there was very little documentation on it even though I found the projects code online. It would be really great to see the OSGI community coalesce around some good practices as I feel like everyone is doing their own thing and I don't know enough about how to integrate functional/reactive development with services/modular development.
On Mon, Jun 26, 2017 at 12:12 PM, Christian Schneider < [email protected]> wrote: > I recently looked into ways to combine messaging and streaming on OSGi. > > Interestingly the best streaming 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/compone > nt/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/rea > ctortest/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/rea > ctortest/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 > >
