Отправка сообщений в пакетном режиме
Описание
Вы можете использовать SendMessageBatch для отправки до 10 сообщений в указанную очередь, назначив одинаковые или разные значения каждому сообщению (или не назначая значений вообще). Это пакетная версия команды `` SendMessage ``. Для очереди FIFO несколько сообщений в одной группе отправляются в порядке их поступления.
Результат отправки каждого сообщения отображается индивидуально в ответе. Поскольку пакетный запрос может привести к комбинации успешных и неуспешных операций, необходимо проверять ошибки пакетной обработки даже в том случае, если вызов возвращает код HTTP статуса 200 .
Максимальный размер отдельного сообщения и максимальный общий размер полезной нагрузки (сумма отдельных длин всех отправляемых в пакет сообщениях) составляют 256 КБ (262 144 байта).
Предупреждение
Сообщение может содержать только XML, JSON и неформатированный текст. Разрешены следующие символы Юникода. Дополнительную информацию см. в спецификации W3C для символов.
#x9 | #xA | #xD | #x20 до #xD7FF | #xE000 до #xFFFD | #x10000 до #x10FFFF
Amazon SQS не генерирует исключение или полностью отбрасывает сообщение, если оно содержит недопустимые символы. Вместо этого он заменяет эти недопустимые символы на U+FFFD перед сохранением сообщения в очереди, если тело сообщения содержит хотя бы один допустимый символ.
Если вы не укажете параметр DelaySeconds для записи, Amazon SQS использует значение по умолчанию для очереди.
См. также: Документацию API AWS
Синтаксис
send-message-batch
--queue-url <value>
--entries <value>
[--cli-input-json | --cli-input-yaml]
[--generate-cli-skeleton <value>]
[--debug]
[--endpoint-url <value>]
[--no-verify-ssl]
[--no-paginate]
[--output <value>]
[--query <value>]
[--profile <value>]
[--region <value>]
[--version <value>]
[--color <value>]
[--no-sign-request]
[--ca-bundle <value>]
[--cli-read-timeout <value>]
[--cli-connect-timeout <value>]
[--cli-binary-format <value>]
[--no-cli-pager]
[--cli-auto-prompt]
[--no-cli-auto-prompt]
Параметры
--queue-url (строка)
URL очереди Amazon SQS, в которую отправляются сообщения в пакете.
Имена и URL-адреса очередей чувствительны к регистру.
--entries (список)
Список элементов `` SendMessageBatchRequestEntry ``.
(структура)
Содержит подробности одного сообщения Amazon SQS вместе с Id .
Id -> (строка)
Идентификатор сообщения в этом пакете, используемый для передачи результата.
Примечание
Идентификаторы (Id ) запросов в пакете должны быть уникальными в рамках одного запроса.
Этот идентификатор может содержать до 80 символов. Допускаются следующие символы: буквенно-цифровые символы, дефисы (-) и подчеркивания (_).
MessageBody -> (строка)
DelaySeconds -> (целое число)
Время в секундах, на которое конкретное сообщение задерживается. Допустимые значения: от 0 до 900. Максимально: 15 минут. Сообщения с положительным значением DelaySeconds становятся доступными для обработки после окончания периода задержки. Если значение не указано, применяется значение по умолчанию для очереди.
Примечание
При установкеFifoQueue нельзя устанавливать DelaySeconds для каждого сообщения. Этот параметр можно установить только на уровне очереди.MessageAttributes -> (массив)
Каждое атрибут сообщения состоит из Name , Type и Value . Более подробную информацию см. в разделе Атрибуты сообщений Amazon SQS в руководстве разработчика Amazon SQS.
key -> (строка)
value -> (структура)
Указанное пользователем значение атрибута сообщения. Для строковых типов данных атрибут Value имеет те же ограничения на содержимое, что и тело сообщения. Для получения дополнительной информации, см. `` SendMessage ``.
Name , type , value и тело сообщения не должны быть пустыми или нулевыми. Все части атрибута сообщения, включая Name , Type и Value, учитываются при ограничении размера сообщения (256 КБ или 262 144 байта).StringValue -> (строка)
BinaryValue -> (двоичные данные)
StringListValues -> (список)
Не реализовано. Зарезервировано для будущего использования.
(строка)
BinaryListValues -> (список)
Не реализовано. Зарезервировано для будущего использования.
(двоичные данные)
DataType -> (строка)
Amazon SQS поддерживает следующие логические типы данных: String , Number и Binary . Для типа данных Number необходимо использовать StringValue .
Также можно добавить пользовательские метки. Для получения дополнительной информации см. Атрибуты сообщений Amazon SQS в руководстве разработчика Amazon SQS.
MessageSystemAttributes -> (массив)
Атрибут системы сообщений для отправки. Каждый атрибут системы сообщений состоит из Name , Type и Value .
Предупреждение
- В настоящее время поддерживается только атрибут системы сообщений
AWSTraceHeader. Его тип должен бытьString, а значение — правильно отформатированная строка заголовка трассировки X-Ray. - Размер атрибута системы сообщений не учитывается при подсчёте общего размера сообщения.
key -> (строка)
value -> (структура)
Указанное пользователем значение атрибута системы сообщений. Для строковых типов данных атрибут Value имеет те же ограничения на содержимое, что и тело сообщения. Для получения дополнительной информации, см. `` SendMessage ``.
Name , type , value и тело сообщения не должны быть пустыми или нулевыми.StringValue -> (строка)
BinaryValue -> (двоичные данные)
StringListValues -> (список)
Не реализовано. Зарезервировано для будущего использования.
(строка)
BinaryListValues -> (список)
Не реализовано. Зарезервировано для будущего использования.
(двоичные данные)
DataType -> (строка)
Amazon SQS поддерживает следующие логические типы данных: String , Number и Binary . Для типа данных Number необходимо использовать StringValue .
Также можно добавить пользовательские метки. Для получения дополнительной информации см. Атрибуты сообщений Amazon SQS в руководстве разработчика Amazon SQS.
MessageDeduplicationId -> (строка)
Этот параметр применяется только к очередям FIFO (первым вошел — первым вышел).
Маркер, используемый для предотвращения дублирования сообщений в интервале дедубликации не менее 5 минут. Если сообщение с определенным MessageDeduplicationId успешно отправлено, последующие сообщения с тем же MessageDeduplicationId принимаются успешно, но не доставляются. Дополнительную информацию см. в разделе Обработка «точно один раз» в руководстве разработчика Amazon SQS.
- Каждое сообщение должно иметь уникальный
MessageDeduplicationId,- Вы можете указать
MessageDeduplicationIdявно. - Если вы не можете указать
MessageDeduplicationIdи включилиContentBasedDeduplicationдля вашей очереди, Amazon SQS использует хеш SHA-256 для генерацииMessageDeduplicationId, используя тело сообщения (но не атрибуты сообщения). - Если вы не указываете
MessageDeduplicationIdи в очереди не установленContentBasedDeduplication, действие завершается с ошибкой. - Если в очереди установлен
ContentBasedDeduplication, ваше значениеMessageDeduplicationIdпереопределяет сгенерированное.
- Вы можете указать
- Когда
ContentBasedDeduplicationвключен, сообщения с идентичным содержимым, отправленные в интервале дедубликации, считаются дубликатами, и доставляется только одна копия сообщения. - Если вы отправили одно сообщение с включенным
ContentBasedDeduplication, а затем другое сообщение сMessageDeduplicationId, совпадающим со сгенерированным для первогоMessageDeduplicationId, оба сообщения считаются дубликатами, и доставляется только одна копия сообщения.
Примечание
MessageDeduplicationId доступно потребителю сообщения (это может быть полезно для устранения проблем с доставкой).
Если сообщение успешно отправлено, но подтверждение утеряно, и сообщение повторно отправляется с тем же MessageDeduplicationId после интервала дедубликации, Amazon SQS не может обнаружить дубликаты сообщений.
Amazon SQS продолжает отслеживать идентификатор дедубликации сообщения даже после получения и удаления сообщения.
Длина MessageDeduplicationId составляет 128 символов. MessageDeduplicationId может содержать буквенно-цифровые символы (a-z , A-Z , 0-9 ) и знаки препинания (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ ).
Рекомендации по использованию MessageDeduplicationId см. в разделе Использование свойства MessageDeduplicationId в руководстве разработчика Amazon SQS.
MessageGroupId -> (строка)
Этот параметр применяется только к очередям FIFO (первым вошел — первым вышел).
Метка, указывающая, что сообщение принадлежит определенной группе сообщений. Сообщения, принадлежащие одной группе сообщений, обрабатываются в порядке FIFO (однако сообщения из разных групп сообщений могут обрабатываться вне порядка). Чтобы чередовать несколько упорядоченных потоков в одной очереди, используйте значения MessageGroupId (например, данные сеанса для нескольких пользователей). В этом случае несколько потребителей могут обрабатывать очередь, но данные сеанса каждого пользователя обрабатываются в порядке FIFO.
- Вы должны связать непустое
MessageGroupIdс сообщением. Если вы не указалиMessageGroupId, действие завершается с ошибкой. -
ReceiveMessageможет возвращать сообщения с несколькими значениямиMessageGroupId. Для каждогоMessageGroupIdсообщения сортируются по времени отправки. Звонящий не может указатьMessageGroupId.
Длина MessageGroupId составляет 128 символов. Допустимые значения: буквенно-цифровые символы и знаки препинания (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~).
Рекомендации по использованию MessageGroupId см. в разделе Использование свойства MessageGroupId в руководстве разработчика Amazon SQS.
Предупреждение
MessageGroupId требуется для очередей FIFO. Его нельзя использовать для стандартных очередей.Синтаксис сокращённого представления:
Id=string,MessageBody=string,DelaySeconds=integer,MessageAttributes={KeyName1={StringValue=string,BinaryValue=blob,StringListValues=[string,string],BinaryListValues=[blob,blob],DataType=string},KeyName2={StringValue=string,BinaryValue=blob,StringListValues=[string,string],BinaryListValues=[blob,blob],DataType=string}},MessageSystemAttributes={KeyName1={StringValue=string,BinaryValue=blob,StringListValues=[string,string],BinaryListValues=[blob,blob],DataType=string},KeyName2={StringValue=string,BinaryValue=blob,StringListValues=[string,string],BinaryListValues=[blob,blob],DataType=string}},MessageDeduplicationId=string,MessageGroupId=string ...
Синтаксис JSON:
[
{
"Id": "string",
"MessageBody": "string",
"DelaySeconds": integer,
"MessageAttributes": {"string": {
"StringValue": "string",
"BinaryValue": blob,
"StringListValues": ["string", ...],
"BinaryListValues": [blob, ...],
"DataType": "string"
}
...},
"MessageSystemAttributes": {"AWSTraceHeader": {
"StringValue": "string",
"BinaryValue": blob,
"StringListValues": ["string", ...],
"BinaryListValues": [blob, ...],
"DataType": "string"
}
...},
"MessageDeduplicationId": "string",
"MessageGroupId": "string"
}
...
]
--cli-input-json | --cli-input-yaml (строка) Читает аргументы из предоставленной JSON-строки. JSON-строка соответствует формату, заданному --generate-cli-skeleton. Если на командной строке предоставлены другие аргументы, эти значения переопределят значения, полученные из JSON. Передача произвольных двоичных значений с помощью JSON-значения невозможна, так как строка будет взята буквально. Это может не быть указано вместе с --cli-input-yaml.
--generate-cli-skeleton (строка) Выводит JSON-скелет в стандартный вывод без отправки запроса к API. Если предоставлено значение без значения или значение input, выводится пример входного JSON, который можно использовать в качестве аргумента для --cli-input-json. Аналогично, если предоставлено значение yaml-input, будет напечатан пример входного YAML, который можно использовать с --cli-input-yaml. Если предоставлено значение output, будут валидированы входные данные командной строки и возвращён пример выходного JSON для этой команды. Сгенерированный JSON-скелет нестабилен между версиями AWS CLI, и нет гарантий обратной совместимости в сгенерированном JSON-скелете.
Общие параметры
--debug (boolean)
Включить отладку логирования.
--endpoint-url (string)
Переопределить URL по умолчанию команды заданным URL.
--no-verify-ssl (boolean)
По умолчанию, AWS CLI использует SSL при общении с AWS-сервисами. Для каждого SSL-соединения AWS CLI будет проверять SSL-сертификаты. Этот параметр переопределяет поведение проверки SSL-сертификатов по умолчанию.
--no-paginate (boolean)
Отключить автоматическую постраничную навигацию. Если автоматическая постраничная навигация отключена, AWS CLI выполнит только один вызов для первой страницы результатов.
--output (string)
Стиль форматирования вывода команды.
- json
- text
- table
- yaml
- yaml-stream
--query (string)
Запрос JMESPath для фильтрации данных ответа.
--profile (string)
Использование определенного профиля из файла учетных данных.
--region (string)
Регион для использования. Переопределяет настройки из конфигурации/окружения.
--version (string)
Отображение версии этого инструмента.
--color (string)
Включение/выключение цветного вывода.
- on
- off
- auto
--no-sign-request (boolean)
Не подписывать запросы. Учетные данные не будут загружены, если этот аргумент предоставлен.
--ca-bundle (string)
Файл с сертификатом CA для проверки SSL-сертификатов. Переопределяет настройки из конфигурации/окружения.
--cli-read-timeout (int)
Максимальное время чтения сокета в секундах. Если значение равно 0, чтение сокета будет блокирующим и не будет иметь таймаута. Значение по умолчанию — 60 секунд.
--cli-connect-timeout (int)
Максимальное время подключения сокета в секундах. Если значение равно 0, подключение сокета будет блокирующим и не будет иметь таймаута. Значение по умолчанию — 60 секунд.
--cli-binary-format (string)
Стиль форматирования, используемый для двоичных блоков. Формат по умолчанию — base64. Формат base64 ожидает, что двоичные блоки будут предоставлены как строка, закодированная в base64. Формат raw-in-base64-out сохраняет совместимость с поведением AWS CLI V1, и двоичные значения должны быть переданы буквально. При предоставлении содержимого из файла, соответствующего двоичному блоку, fileb:// всегда будет обрабатываться как двоичный и использовать содержимое файла непосредственно, независимо от настройки cli-binary-format. При использовании file:// содержимое файла должно быть правильно отформатировано для настроенного cli-binary-format.
- base64
- raw-in-base64-out
--no-cli-pager (boolean)
Отключить пагинатор CLI для вывода.
--cli-auto-prompt (boolean)
Автоматически запросить параметры ввода CLI.
--no-cli-auto-prompt (boolean)
Отключить автоматический запрос параметров ввода CLI.
Примеры
Примечание
Для использования следующих примеров необходимо установить и настроить AWS CLI. Дополнительную информацию см. в руководстве по началу работы в Руководстве пользователя AWS CLI.
Если не указано иное, все примеры используют правила цитирования для Unix-подобных систем. Эти примеры необходимо адаптировать к правилам цитирования вашей терминальной среды. См. раздел «Использование кавычек со строками» в Руководстве пользователя AWS CLI.
Отправка нескольких сообщений как пакет
В этом примере отправляются 2 сообщения с указанными телами сообщений, периодами задержки и атрибутами сообщений в указанную очередь.
Команда:
aws sqs send-message-batch --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --entries file://send-message-batch.json
Файл ввода (send-message-batch.json):
[
{
"Id": "FuelReport-0001-2015-09-16T140731Z",
"MessageBody": "Fuel report for account 0001 on 2015-09-16 at 02:07:31 PM.",
"DelaySeconds": 10,
"MessageAttributes": {
"SellerName": {
"DataType": "String",
"StringValue": "Example Store"
},
"City": {
"DataType": "String",
"StringValue": "Any City"
},
"Region": {
"DataType": "String",
"StringValue": "WA"
},
"PostalCode": {
"DataType": "String",
"StringValue": "99065"
},
"PricePerGallon": {
"DataType": "Number",
"StringValue": "1.99"
}
}
},
{
"Id": "FuelReport-0002-2015-09-16T140930Z",
"MessageBody": "Fuel report for account 0002 on 2015-09-16 at 02:09:30 PM.",
"DelaySeconds": 10,
"MessageAttributes": {
"SellerName": {
"DataType": "String",
"StringValue": "Example Fuels"
},
"City": {
"DataType": "String",
"StringValue": "North Town"
},
"Region": {
"DataType": "String",
"StringValue": "WA"
},
"PostalCode": {
"DataType": "String",
"StringValue": "99123"
},
"PricePerGallon": {
"DataType": "Number",
"StringValue": "1.87"
}
}
}
]
Вывод:
{
"Successful": [
{
"MD5OfMessageBody": "203c4a38...7943237e",
"MD5OfMessageAttributes": "10809b55...baf283ef",
"Id": "FuelReport-0001-2015-09-16T140731Z",
"MessageId": "d175070c-d6b8-4101-861d-adeb3EXAMPLE"
},
{
"MD5OfMessageBody": "2cf0159a...c1980595",
"MD5OfMessageAttributes": "55623928...ae354a25",
"Id": "FuelReport-0002-2015-09-16T140930Z",
"MessageId": "f9b7d55d-0570-413e-b9c5-a9264EXAMPLE"
}
]
}
Вывод
Успешно -> (список)
Список элементов `` SendMessageBatchResultEntry ``.
(структура)
Охватывает MessageId для успешно помещенного в очередь сообщения в `` SendMessageBatch ``.
Id -> (строка)
MessageId -> (строка)
MD5OfMessageBody -> (строка)
MD5OfMessageAttributes -> (строка)
MD5OfMessageSystemAttributes -> (строка)
SequenceNumber -> (строка)
Этот параметр применяется только к очередям FIFO (первым вошел, первым вышел).
Большое, несмежное число, которое Amazon SQS присваивает каждому сообщению.
Длина SequenceNumber составляет 128 бит. По мере увеличения SequenceNumber для конкретной MessageGroupId.
Неуспешно -> (список)
Список элементов `` BatchResultErrorEntry `` с подробными сведениями об ошибках каждого сообщения, которое не может быть помещено в очередь.
(структура)
Предоставляет подробное описание результата действия для каждого элемента в запросе.
Id -> (строка)
SenderFault -> (boolean)
Code -> (строка)
Message -> (строка)
© Copyright 2025, Amazon Web Services. Created using Sphinx.