> For the complete documentation index, see [llms.txt](https://aaronice.gitbook.io/system-design/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://aaronice.gitbook.io/system-design/distributed-systems/queues.md).

# Queues

Processing Queue - all incoming tasks are added to the queue, and as soon as any worker has the capacity to process, they can pick up a task from the queue

## Usage

* asynchronous communication protocol - client not required to wait for the results
* fault tolerance - as they can provide some protection from service outages and failures

Queues play a vital role in managing distributed communication between different parts of any large-scale distributed system.

## Examples

RabbitMQ vs Kafka
