top of page
image 82.png

REACTIVE PROGRAMMING PARADIGM

The programming architecture which we have used till now, is a synchronous architecture, where a bunch of simple microservices interact with each other, each one having a distinctive responsibility and a role to play.

  • All the calls to the external systems and the internal embedded database are blocking in nature.

  • When we need to handle a large stream of incoming data, most of the worker threads in each service would be busy completing their task. Whereas the servlet threads in each service reach a waiting state due to which some of the calls remain blocked until the previous ones are resolved. This affects the overall performance of the microservice.

  • Failure in any of these services could have a cascading effect and stop the entire system resulting in abnormal functioning of the microservices.

Blocking calls in any large-scale system involving huge amounts of data often becomes a bottleneck waiting for things to work. Therefore, we must plan to make sure that the threads do not get into a waiting state and must create an event loop to circle back once the responses are received from the underlying system. Here, the Reactive Programming Paradigm comes into play.

First, add the following dependencies in your “pox.xml” file.

image 92.png

Then, create a Repository (Java Interface having @Repository annotation), named “EventRepositoryReactive.java” as shown below-

image 93.png

Then, create a Service Class (Java class with @Service annotation) named “EventServiceReactive.java” as shown below -

image 94.png
image 95.png

And the last step is to create a Controller class (Java class with @RestController annotation) named “EventControllerReactive.java” as shown below -

image 96.png
image 97.png

Now, let us discuss a few terms we have used in the above codes -

  • Publisher - It is responsible for preparing and transferring data to subscribers. In our codes, “Mono<EventRespDTO>” and “Flux<EventRespDTO>” are the publishers.

  • Subscriber - A subscriber is responsible for receiving messages from a publisher and processing those messages. Here, the methods using Mono and Flux are the Subscribers.

image 99.png
  • Mono - A publisher that emits 0 or 1 element.

  • Flux - A publisher that emits 0 to N elements. It returns a sequence of elements and sends a notification when it has completed returning all its elements.

bottom of page