Visibility Timeout and Message Lifecycle

~8 min read

How SQS prevents (most) duplicate processing while still guaranteeing at-least-once delivery.

Visibility Timeout and Message Lifecycle is a Pro topic

Sign in, then upgrade to Pro or Power to unlock this topic and the full AWS curriculum.

Key points

  • ReceiveMessage doesn't delete a message — it becomes temporarily invisible for the visibility timeout duration
  • DeleteMessage after successful processing permanently removes it
  • No delete before timeout expiry means the message becomes visible again for reprocessing
  • This mechanism is the source of SQS's at-least-once (occasionally more) delivery guarantee