Streams for reactive microservices
Spring Cloud Streams provides an abstraction over the messaging infrastructure. The underlying messaging implementation can be RabbitMQ, Redis, or Kafka. Spring Cloud Streams provides a declarative approach for sending and receiving messages.

As shown in the preceding diagram, the Cloud Streams work with the concept of a Source and a Sink. The Source represents the sender perspective of the messaging, and Sink represents the receiver perspective of the messaging.
In the given example, the Sender defines a logical queue called Source.OUTPUT to which the Sender sends messages. The Receiver defines a logical queue called Sink.INPUT from which the Receiver retrieves messages. The physical binding of OUTPUT to INPUT is managed through the configuration. In this case, both link to the same physical queue, MyQueue on RabbitMQ. So, at one end, Source.OUTPUT will be pointed to MyQueue, and on the other end, Sink.INPUT will be pointed to the same MyQueue.
Spring Cloud...