SpringOne Platform 2017
Paul Harris, Pivotal; Ben Hale, Pivotal
The Java community is on the cusp of a major change in programming model. As the industry moves towards high-performance micro-service architectures, the need for a reactive programming model becomes clear. In this session, the lead developers of the Cloud Foundry Java Client will talk about what led them to choose a reactive API. Using that project as a lens, they'll explore how they designed and implemented this API using Project Reactor and what users will expect when using a reactive API. If you are a developer looking to provide reactive APIs, this is your chance to gain the experience of team building a large, production-ready reactive library.
Battle tested Stephane’s ideas, and he made changes accordingly.
Say Multicore!
Also otherwiseReturn
If not, use Java 8 Streams!
e.g. JUnit
e.g. Servlet Container
e.g. Main methods and Junit
Keep everything reactive for as long as possible, blocking only right at the point where you interact with the imperative API.
Any reactive API can be made imperative, the reverse is not true.
Used to be called .get(), which is friendly and accessible!
Block is scary and evil, we don’t want to block!
If you feel yourself typing Mono.block() stop! Do I really need to do this, and is this the right place to do it?
Consume
One of the following happens
Error
Complete
So there is no ‘finally’, you have to take care of it