SQS (Simple Queue Service) - vedratna/aws-learning GitHub Wiki
Standard SQS
At least one delivery (there is a chance, same message get's delivered multiple times), no guarantee of order
Delay in Seconds: Time after which message is available to consume, once publish. By default it's 0 second, that is message would be available to consume immediately once published. At max it should be delayed upto 15 mins.
Delay seconds can be set at queue level; also when publisher publishes the message to the queue, it can set the delay seconds for that specific message which would be applicable to that message only. Please note that for FIFO queue delay seconds can be set at queue level only.
Visibility Timeout: This is the time till message will remain invisible in the queue once it is consumed by a consumer. Once any consumer consumes the message, SQS will keep that message in the queue but it will remain invisible that is not available to consume for any other consumer till visibility timeout happens. Basically SQS gives that much time to consumer to process the message successfully and remove it from the queue. If consumer fails to do so in given visibility timeout, SQS believes that consumer fails to process it and make it available in the queue to get consumed again. The default visibility timeout is 30 seconds. Minimum is 0 seconds and maximum is 12 hours.
Visibility timeout can be set at queue level; also once consumer receives the message, it can change the visibility timeout for that message, that is visibility timeout can be changed at message level by the consumer that receives the message. Please note that the visibility timeout change done by consumer on specific message would not affect other messages in the queue.
Message Retention Time: By default message is retained for 4 days in the queue. Minimum retention time is 60 seconds and maximum is 14 days.
There is no limitation of no. of messages stored in queue, however there are limitations for no. of inflight messages. (Messages those are consumed but not yet removed from the queue). For standard queue it is 120000 and for fifo queue it is 20000.
FIFO SQS
Exactly-once processing and guarantee the order of messages within the same group.
It limits no. of API calls, If you use batching, FIFO queues support up to 3,000 transactions per second, per API method (SendMessageBatch, ReceiveMessage, or DeleteMessageBatch). The 3000 transactions represent 300 API calls, each with a batch of 10 messages. To request a quota increase, submit a support request.Without batching, FIFO queues support up to 300 API calls per second, per API method (SendMessage, ReceiveMessage, or DeleteMessage).
Amazon SNS isn't currently compatible with FIFO queues.
Message group ID and Deduplication ID are the characteristics of FIFO that differentiate it from standard SQS.
For FIFO, as mentioned above delay seconds can be set at queue level only.