Queues are a fundamental building block for proper system designs. By decoupling the producer and consumer, get the following benefits

  • A storage to avoid dropping packets. Note, queues do not prevent requests getting dropped but they certainly help.
  • Asynchronous API: let’s the user fire out an expensive request without blocking for it’s response.
  • Fan out
  • Horizontal Scaling

However, it is really easy to design queues improperly that greatly limit performance. A more performant queue leads to a higher service rate which helps deter against back pressure– that is, the more performant the queue the less dropped packages.

Resources: