The need for queues
Queues are data structures that enable you to queue and de-queue messages into them for later retrieval; they allow you to create a backlog of work. A queue-centric pattern in applications can be simply described as follows: an application uses a queue to keep messages or chunks of data in a quick and ordered way; on the other hand a backend tier(s) of the same or different application is following up on these messages and processing them gradually.
Queues are used in a wide range of applications and they prove to be very effective in addressing many business requirements, such as increasing availability and reliability of systems; reducing latency; load-leveling the workload and deferring processing at peak times; avoiding bottlenecks of IO resources; and distributing communication between heterogeneous platforms.
Increasing the availability and reliability
Applications that are dependent on other services, such as databases or public APIs, need a way to avoid any service...