Very good blog to read about the life cycle of messages in SQS
- Delivery of Messages can be delayed
- Messages have an expiry
- Dead letter queues if unable to process a message. Unable to process is identified by number of retries to read a message.
- Once a message is being read by a consumer, this message shouldn’t be processed by another service at the same time. So when a message is being read, you can configure SQS so that same message wont be read by multiple consumers. This concept is called as Visibility Timeout.