Сообщения

    Сообщения передаются через очереди и могут содержать в теле обычный текст. Сообщения получают потребители, которые удаляют сообщения из очереди после обработки.

    Сообщение может находиться в трех состояниях:

    • Сообщение отправлено в очередь отправителем. Если сообщение отправлено в очередь, но еще не принято получателем, считается, что оно находится в очереди.
    • Сообщение принято получателем. Если сообщение принято получателем, но еще не удалено из очереди, считается, что оно находится в обработке.
    • Сообщение удалено из очереди.

    В стандартных очередях в обработке одновременно могут находиться до 120000 сообщений. Чтобы избежать превышения лимита сообщения следует вовремя удалять из очереди. В очередях FIFO в обработке могут находиться 20000 сообщений.

    В состав сообщения входит несколько полей:

    1. Тело сообщения.
    2. Набор атрибутов сообщения, указывающих время отправки, количество приемов сообщения, время отправки.
    3. Идентификатор получения. Каждый раз при получении сообщения из очереди формируется идентификатор, указывающий на факт получения сообщения. Этот идентификатор используется для удаления полученного сообщения из очереди или изменения его таймаута видимости. Сообщение обязательно должно быть принято получателем перед удалением. Если сообщение принято несколько раз, в каждом случае ему будет присваиваться новый идентификатор получения. Необходимо использовать самый последний идентификатор, чтобы удалить сообщение или изменить его таймаут видимости.
    4. Хэш-сумма тела сообщения.
    5. Идентификатор сообщения. Каждому сообщению присваивается уникальный идентификатор, который возвращается в ответе на вызов метода SendMessage. Идентификатор может использоваться для обращения к сообщениям, но для удаления сообщений из очереди используется идентификатор получения — параметр ReceiptHandle.

    Вид сообщения с обычным текстом и без дополнительных параметров:

    {
                "Body": "Sample message",
                "Attributes": {
                    "ApproximateFirstReceiveTimestamp": "1544718635323",
                    "ApproximateReceiveCount": "1",
                    "SentTimestamp": "1544718633138"
                },
                "ReceiptHandle": "EAsgu6Kfw_osKAE",
                "MD5OfBody": "5b792970792ac60da66329aa58e99054",
                "MessageId": "fa6bcfb7-6f121e1d-fb3b33aa-2629f67"
    }