Asynchronous Event Streams – when java.util.stream met org.osgi.util.promise!
Asynchronous and event-driven programming models are great for processing data, whether it's sensors in homes, or metrics from a web server farm, event streaming is a tool for analyzing data that can be produced at any time.
Whilst Java 8 Streams have begun to teach developers about streaming, it's still stuck with a pull model. How do you cope with push-based events without blocking and timeouts? Rx Java Observables, and the Actor pattern provide a different abstraction, but wouldn't it be great to keep the simplicity of Streams with the power of asynchronous push-based events?
This talk will describe the prototyping work happening in OSGi's Distributed Eventing RFC, using streams and promises to build event processing pipelines.
The OSGi service platform has existed as a modular micro-service runtime for well over a decade, but more recently it has embraced asynchronous programming as a core part of the OSGi toolkit. With the introduction of the Async Service, and OSGi promises it is now easier than ever to build asynchronous applications. The focus so far has been on asynchronous requests, but what about streaming systems, ones that need to process or filter thousands, millions, or billions of events before an answer is reached, or perhaps there is no end to the stream at all!
Processing distributed events is the purpose of the Distributed Eventing RFC being discussed by the OSGi Enterprise Expert Group. As the lead author of the RFC, and the lead of the Asynchronous Service specification, Tim has a detailed understanding of the complexities of Asynchronous programming models. Tim will be able to describe the current prototyping around OSGi's Asynchronous Streaming model, and how it fits with the other popular asynchronous standards.