Multis emit items.
One of the most common operations you will do is transforming these items using a synchronous 1-to-1 function.
To achieve this, you use
It calls the passed function for each item and produces the result as an item which is propagated downstream.
sequenceDiagram autonumber participant M as Multi participant O as Transformer participant D as Subscriber M->>O: onItem(a1) O->>D: onItem(a2) M->>O: onItem(b1) O->>D: onItem(b2) M->>O: onItem(c1) O->>D: onItem(c2)
Transforming items produced by a Uni#
Let’s imagine you have a
Uni<String>, and you want to capitalize the received
Implementing this transformation is done as follows:
Transforming items produced by a Multi#
The only difference for
Multi is that the function is called for each item:
The produced items are passed to the downstream subscriber:
What if the transformation failed?#
If the transformation throws an exception, that exception is caught and passed to the downstream subscriber as a failure event. It also means that the subscriber won’t get further item after that failure.
Chaining multiple transformations#
You can chain multiple transformations: