AWS SQS

A place for notes on Amazon Simple Queue Service.

What problems does SQS solve?

  • Decoupling: producer and consumer does not have direct dependency on each other
  • Asynchronous Processing: producer does not necessarily wait for consumer to finish its job
  • Load Leveling: when a large amount of events coming into queue, consumer can still consume at its own pace

How does it work?

  1. SendMessage: producer send message to queue
  2. ReceiveMessage: consumer poll message. SQS returns message body and ReceiptHandler
  3. Visibility Timeout: Message goes invisible to other consumers, default 30 sec.
  4. Process message: consumer executes logic
  5. DeleteMessage: Consumer successfully handled the message, then use ReceiptHandle to delete message.

When consumer crashes during processing message, SQS wait until visibility timeout and message will be visible for other consumers again.

Why SQS? Use cases?

Tradeoffs

Typical Pattern