Queues (especially fault tolerant and persistent queues) provide communication between components and ultimately allow queue authors to be asynchronous with readers. This means that readers and writers can be increased depending on the use of the queue.
Consider a simple example of serving web requests. If a heavy operation is queued, another set of components can read the queue and process the request without affecting the author, and thus allows the HTTP listener to serve more requests because it is not connected. As the number of items in the queue increases, readers can be added to the queue to process them.
From the point of view of reliability, if the queue is reliable, the messages between the components are not lost, so communication is inherently more reliable. Readers and writers can go up and down, but as long as the messages are safe, you have the foundation for a more reliable system than the one where the messages may be lost.
In fact, you are creating systems with lower runtimes, and therefore a single point failure does not necessarily extend throughout the system. Allow the use of fault tolerance strategies more successfully.
source share