...
/The Server in Reactive Programming
The Server in Reactive Programming
Learn about the role of a server in reactive programming.
We'll cover the following...
To focus on the concept of a server delivering those asynchronous dishes we studied, let’s write some more code!
A SimpleServer
Let’s take a look at the code for the SimpleServer
class below:
class SimpleServer {private final KitchenService kitchen;SimpleServer(KitchenService kitchen) { //1this.kitchen = kitchen;}Flux<Dish> doingMyJob() { //2return this.kitchen.getDishes().map(dish -> Dish.deliver(dish));//3}}
This SimpleServer
class has the following features:
-
In line 5, whoever creates an instance of
SimpleServer
must provide it with an instance ofKitchenService
. This is known as constructor injection. -
In line 8, the
doingMyJob()
function, which a manager can tap, invokes the kitchen togetDishes()
. -
In line 10, after asking the
kitchen
fordishes
, it uses.map()
to define a handler and tell them what to do with eachdish
when it arrives. In this case, it invokes thedeliver(dish)
function.
Note: The
deliver(dish)
function of theDish
class sets thedish delivered
state totrue
.
With this code, we’ve defined a simple reactive consumer. It invokes another reactive service and transforms the results.
Look closely and notice that, while retrieving a Flux
of Dish
objects from the kitchen
, it returns the same type. The difference is that the kitchen
produces a cooked series of entrées, while the SimpleServer
produces a delivered series of entrées.
We are using a Java 8 lambda function dish → Dish.deliver(dish)
in the code above. Lambda is a fancy way of saying anonymous. On the left side of the arrow are the inputs, dish
in this case. On the right side of the arrow is what we do with it. The SimpleServer
...