sqs-dg-2009-02-01
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Amazon Simple Queue Service Developer Guide
Properties of Distributed Queues
The following table lists the API actions to use.
To do this...
Create a queue
List your queues
Delete a queue
Use this action
CreateQueue
ListQueues
DeleteQueue
Properties of Distributed Queues
The following information can help you design your application to work with Amazon SQS correctly.
Message Order
SQS makes a best effort to preserve order in messages, but due to the distributed nature of the queue,
we cannot guarantee you will receive messages in the exact order you sent them. If your system requires
that order be preserved, we recommend you place sequencing information in each message so you can
reorder the messages upon receipt.
At-Least-Once Delivery
SQS stores copies of your messages on multiple servers for redundancy and high availability. On rare
occasions, one of the servers storing a copy of a message might be unavailable when you receive or
delete the message. If that occurs, the copy of the message will not be deleted on that unavailable server,
and you might get that message copy again when you receive messages. Because of this, you must
design your application to be idempotent (i.e., it must not be adversely affected if it processes the same
message more than once).
Message Sample
When you retrieve messages from the queue, SQS samples a subset of the servers (based on a weighted
random distribution) and returns messages from just those servers. This means that a particular receive
request might not return all your messages. Or, if you have a small number of messages in your queue
(less than 1000), it means a particular request might not return any of your messages, whereas a
subsequent request will. If you keep retrieving from your queues, SQS will sample all of the servers, and
you will receive all of your messages.
The following figure shows messages being returned after one of your system components makes a
receive request. SQS samples several of the servers (in gray) and returns the messages from those
servers (Message A, C, D, and B). Message E is not returned to this particular request, but it would be
returned to a subsequent request.
API Version 2009-02-01
5