Envia até 16 mensagens para uma fila em uma única solicitação. O tamanho total máximo do payload por lote é de 64 KB.
Autorização
Por padrão, apenas contas Alibaba Cloud podem chamar esta operação. Conceda as permissões necessárias aos usuários RAM antes que eles executem esta chamada. Para mais informações, consulte Políticas de permissão e exemplos.
|
Propriedade |
Valor |
|
API |
BatchSendMessage |
|
Action |
mns:BatchSendMessage |
|
Resource |
acs:mns:$region:$accountid:/queues/$queueName/messages |
Observações de uso
Cada lote suporta até 16 mensagens, com tamanho máximo combinado de 64 KB.
Codifique todos os corpos de mensagem em Base64 antes do envio. Essa prática evita erros causados por caracteres especiais no payload XML.
Se
DelaySecondsfor omitido ou definido como0, as mensagens ficam disponíveis para consumo imediatamente. Para atrasar o consumo, definaDelaySecondscom um valor maior que 0. Mensagens atrasadas entram no estado Delayed e passam para Active após o período especificado.Quando tanto a mensagem quanto a fila definem
DelaySeconds, o valor no nível da mensagem tem precedência.Cálculo de QPS: O QPS efetivo de uma fila corresponde à taxa de solicitações multiplicada pelo número de mensagens por lote. Por exemplo, 100 solicitações por segundo com 10 mensagens por lote resultam em 1.000 QPS nessa fila.
Solicitação
Linha de solicitação
POST /queues/$queueName/messages HTTP/1.1
Headers
Esta operação não define headers específicos. Para os headers comuns, consulte o exemplo de solicitação.
Corpo da solicitação
O corpo da solicitação utiliza formato XML. Envolva cada mensagem em um elemento <Message> dentro de um elemento raiz <Messages>.
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
MessageBody |
String |
Sim |
Corpo da mensagem. Codifique este valor em Base64 antes do envio. |
|
DelaySeconds |
Integer |
Não |
Atraso em segundos antes que a mensagem possa ser consumida. Valores válidos: 0 a 604800. Padrão: 0. |
Resposta
Sucesso
HTTP/1.1 201 Created
A resposta contém um elemento <Message> para cada mensagem do lote:
|
Parâmetro |
Tipo |
Descrição |
|
MessageId |
String |
ID exclusivo da mensagem na fila. |
|
MessageBodyMD5 |
String |
Hash MD5 do corpo da mensagem. Compare este valor com um hash calculado localmente para verificar a integridade da mensagem. |
Falha parcial
Quando algumas mensagens de um lote falham, a resposta retorna o código de status HTTP 500. O corpo da resposta contém uma mistura de entradas bem-sucedidas e com falha:
Mensagens bem-sucedidas incluem
MessageIdeMessageBodyMD5.Mensagens com falha incluem
ErrorCodeeErrorMessageem vez disso.
Exemplos
Enviar duas mensagens com valores de atraso diferentes
Solicitação:
POST /queues/$queueName/messages HTTP/1.1
Host: $AccountId.mns.cn-hangzhou.aliyuncs.com
Date: Wed, 18 Mar 2012 12:00:00 GMT
Content-Length:500
Content-Type:text/xml;charset=utf-8
x-mns-version: 2015-06-06
Authorization: MNS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXA****
<?xml version="1.0" encoding="UTF-8"?>
<Messages xmlns="http://mns.aliyuncs.com/doc/v1/">
<Message>
<MessageBody>This is test message 1.</MessageBody>
<DelaySeconds>60</DelaySeconds>
<Priority>1</Priority>
</Message>
<Message>
<MessageBody>This is test message 2.</MessageBody>
<DelaySeconds>0</DelaySeconds>
<Priority>1</Priority>
</Message>
</Messages>
Resposta: todas as mensagens enviadas
HTTP/1.1 201 Created
Content-Length:120
Content-Type:text/xml;charset=utf-8
x-mns-request-id:512B2A634403E52B1956****
x-mns-version: 2015-06-06
<?xml version="1.0" encoding="UTF-8"?>
<Messages xmlns="http://mns.aliyuncs.com/doc/v1/">
<Message>
<MessageId>5F290C926D472878-2-14D9529A8FA-20000****</MessageId>
<MessageBodyMD5>C5DD56A39F5F7BB8B3337C6D11B6****</MessageBodyMD5>
</Message>
<Message>
<MessageId>5F290C926D472878-2-14D9529A8FA-20000****</MessageId>
<MessageBodyMD5>377AC5283D8765C9CEE4E0EA353D****</MessageBodyMD5>
</Message>
</Messages>
Resposta: falha parcial
Quando uma ou mais mensagens falham, a resposta retorna HTTP 500. Cada elemento <Message> contém um resultado bem-sucedido ou um erro:
HTTP/1.1 500
Content-Length:120
Content-Type:text/xml;charset=utf-8
x-mns-request-id:512B2A634403E52B1956****
x-mns-version: 2015-06-06
<?xml version="1.0" encoding="UTF-8"?>
<Messages xmlns="http://mns.aliyuncs.com/doc/v1/">
<Message>
<MessageId>5F290C926D472878-2-14D9529A8FA-20000****</MessageId>
<MessageBodyMD5>C5DD56A39F5F7BB8B3337C6D11B6****</MessageBodyMD5>
</Message>
<Message>
<MessageId>5F290C926D472878-2-14D9529A8FA-20000****</MessageId>
<MessageBodyMD5>377AC5283D8765C9CEE4E0EA353D****</MessageBodyMD5>
</Message>
<Message>
<ErrorCode>InternalError</ErrorCode>
<ErrorMessage>Internal error.</ErrorMessage>
</Message>
</Messages>
Códigos de erro
|
Código de erro |
Mensagem de erro |
Status HTTP |
Descrição |
|
QueueNotExist |
The queue name you provided is not exist. |
404 |
A fila especificada não existe. Crie a fila antes de enviar mensagens. |
|
MalformedXML |
The XML you provided was not well-formed. |
400 |
O corpo da solicitação contém XML inválido. Verifique a estrutura e a codificação do XML. |
|
InvalidArgument |
The value of Element should between Low and High seconds/bytes. |
400 |
Um valor de parâmetro está fora do intervalo permitido. Especifique um valor válido conforme indicado. |