Question

When would I use reactive programming libraries like RX Java and Project Reactor compared to stream processing engines such as Storm and Flink?

I am aware that these concepts might not be directly comparable, but I would like to understand the relationship between both concepts better.

My current undertanding is that both have a focus on unbounded streams of events/data.

Reactive programmin is a more low-level concept in the sense that a stream processing engine could be implemented with it. I think this is actually the case for Akka Streams.

Stream processing engines seem to aim to solve the problem of horizontal scaling stream processing tasks, i.e., clustering etc.

Please clearify the commonalities and differences between both concepts, typical use cases for each of them and how they relate to each other otherwise.

No correct solution

OTHER TIPS

Reactive programming libraries often use streaming as a basic capability. From there, they add the capability of managing work across threads, and across time.

While a streaming library might have operations that parallelize computation, those operations are restricted to the stream they are working on. A reactive library might combine and split streams, moving computation between threads, and rejoining results into a single thread, etc.

Licensed under: CC-BY-SA with attribution
scroll top