Channels are provided on channel microservices, which are native microservices (so it has a standard configuration.yml file) with additional configuration in channels.yml file, where channels definitions are provided:

Figure 1. JLupin Reactive Channels Architecture.

Lets assume that web application WebApp1 makes an reactive request to the application microservice app_A using SAMPLE channel to get the response, located on channels_1 channel microservive. It uses the following reactive communication schema, as show on the following diagram:

Figure 2. JLupin Reactive Channels data flows.

The whole process has the following stages:

  1. The app_A microservice opens stream channel to SAMPLE located on channels_1 microservice and start acting as a publisher ready to send messages (using JLRMC entry point located on Main Server).
  2. The web application WebApp1invokes a service on the app_A microservice using JLRMC entry point on Main Server.
  3. Just after invoking the service the WebApp1 subscribes to stream channel SAMPLE located on channels_1 microservice. (it uses the same streamChannelId as microservice app_A which got during service invocation).
  4. The microservice app_A sends part of the response (for example: set of rows from database) as messages to channel SAMPLE.
  5. The WebApp1 as a subscriber is getting messages from channel SAMPLE gradually and start processing them (for example: display on the screen).