Everyone's doing Stream Processing these days. During last 5 years there's been more CEP engines released than Web Frameworks. This is a great pattern, but without Functional Programming concepts you're just touching a surface. How to make your streams immutable, composable and reusable, and why many out-of-the-box distributions are limiting your basically endless opportunities.
Stateful streams is a current state-of-art. Although much too often state makes the Stream less composable and performant. People are using stores such as Redis to store the intermediate state, and never think about better ways to make state available for every worker.
With currently existing single-box RX Frameworks and Message Queues it's possible to build Streams in ways that entirely change the perspective and thinking about the stream, taking complexity out and letting developers think about each entity in a stream as an isolated event, allowing better composition and testability.