Project Reactor provides a very versatile DSL for Reactive Stream processing. However, some practice is required to get used to the library so that selecting an appropriate operator for a task is not a struggle. Reactor's fluent API and well-written documentation help a lot with this process. Also, we recommend reading the Which operator do I need? section of the official documentation whenever it is not apparent which operator to use for a concrete problem. The article can be found here: http://projectreactor.io/docs/core/release/reference/#which-operator.