Exclua até 16 mensagens de uma fila em uma única solicitação.
Uma solicitação de exclusão em lote contém várias subsolicitações. Algumas podem falhar enquanto outras são bem-sucedidas. O código de status HTTP 204 é retornado apenas quando todas as subsolicitações têm êxito. Se alguma subsolicitação falhar, verifique os detalhes de erro de cada entrada com falha no corpo da resposta.
|
Nome |
Valor |
|
API |
BatchDeleteMessage |
|
Ação |
mns:BatchDeleteMessage |
|
Recurso |
acs:mns:$region:$accountid:/queues/$queueName/messages |
Funcionamento
Para excluir mensagens de uma fila, envie os receipt handles correspondentes em uma solicitação BatchDeleteMessage. Um receipt handle é retornado na resposta de uma chamada ReceiveMessage ou BatchReceiveMessage e identifica exclusivamente um evento de recebimento específico.
O ciclo de vida da mensagem segue estas etapas:
Receba mensagens da fila (ReceiveMessage ou BatchReceiveMessage).
Processe cada mensagem na aplicação.
Exclua as mensagens processadas (DeleteMessage ou BatchDeleteMessage).
Combine BatchReceiveMessage com BatchDeleteMessage para reduzir o número de chamadas de API e melhorar o throughput.
Sintaxe da solicitação
DELETE /queues/$queueName/messages HTTP/1.1
Cabeçalhos
Não há cabeçalhos de solicitação específicos para esta operação. Para cabeçalhos comuns, consulte Parâmetros comuns.
Corpo
O corpo da solicitação está no formato XML. Inclua cada receipt handle em um elemento <ReceiptHandle> dentro de um elemento raiz <ReceiptHandles>.
Schema:
<ReceiptHandles xmlns="http://mns.aliyuncs.com/doc/v1/">
<ReceiptHandle>string</ReceiptHandle>
<ReceiptHandle>string</ReceiptHandle>
<!-- Up to 16 entries -->
</ReceiptHandles>
|
Elemento |
Tipo |
Obrigatório |
Descrição |
|
ReceiptHandles |
Container |
Sim |
Elemento raiz que contém um ou mais elementos filhos |
|
ReceiptHandle |
String |
Sim |
Receipt handle retornado por ReceiveMessage ou BatchReceiveMessage. Cada handle identifica um evento de recebimento específico para uma mensagem. |
Resposta
Êxito (todas as mensagens excluídas)
Código de status HTTP: 204 NoContent
Não há cabeçalhos de resposta ou corpo de resposta específicos para esta operação.
Falha parcial
Quando uma ou mais subsolicitações falham, a resposta inclui um código de status de erro HTTP e um corpo XML que lista cada entrada com falha.
Schema:
<Errors xmlns="http://mns.aliyuncs.com/doc/v1/">
<Error>
<ErrorCode>string</ErrorCode>
<ErrorMessage>string</ErrorMessage>
<ReceiptHandle>string</ReceiptHandle>
</Error>
</Errors>
|
Elemento |
Tipo |
Descrição |
|
Errors |
Container |
Elemento raiz que contém um ou mais elementos filhos |
|
Error |
Container |
Detalhes de uma única exclusão com falha. |
|
ErrorCode |
String |
Código de erro legível por máquina. Consulte Códigos de erro. |
|
ErrorMessage |
String |
Descrição do erro legível por humanos. |
|
ReceiptHandle |
String |
Receipt handle da mensagem cuja exclusão falhou. Compare este valor com os handles da solicitação para identificar qual mensagem não foi excluída. |
Exemplos
Solicitação
DELETE /queues/$queueName/messages HTTP/1.1
Host: $AccountId.mns.cn-hangzhou.aliyuncs.com
Date: Wed, 28 May 2012 22:32:00 GMT
x-mns-version: 2015-06-06
Authorization: MNS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXA****
<?xml version="1.0" encoding="UTF-8"?>
<ReceiptHandles xmlns="http://mns.aliyuncs.com/doc/v1/">
<ReceiptHandle>1-ODU4OTkzNDU5My0xNDM1MTk3NjAwLTItNg==</ReceiptHandle>
<ReceiptHandle>1-ODU4OTkzNDU5NC0xNDM1MTk3NjAwLTItNg==</ReceiptHandle>
<ReceiptHandle>1-ODU4OTkzNDU5NS0xNDM1MTk3NjAwLTItNg==</ReceiptHandle>
</ReceiptHandles>
Resposta (êxito)
Todas as três mensagens foram excluídas:
HTTP/1.1 204 No Content
x-mns-request-id: 512B2A634403E52B1956****
x-mns-version: 2015-06-06
Resposta (falha parcial)
Duas das três mensagens não foram excluídas porque não existem mais na fila:
HTTP/1.1 404
Connection: close
Content-Type: text/xml;charset=utf-8
Content-Length: 500
x-mns-request-id: 512B2A634403E52B1956****
x-mns-version: 2015-06-06
<?xml version="1.0" encoding="UTF-8"?>
<Errors xmlns="http://mns.aliyuncs.com/doc/v1/">
<Error>
<ErrorCode>MessageNotExist</ErrorCode>
<ErrorMessage>Message not exist.</ErrorMessage>
<ReceiptHandle>1-ODU4OTkzNDU5My0xNDM1MTk3NjAwLTItNg==</ReceiptHandle>
</Error>
<Error>
<ErrorCode>MessageNotExist</ErrorCode>
<ErrorMessage>Message not exist.</ErrorMessage>
<ReceiptHandle>1-ODU4OTkzNDU5NC0xNDM1MTk3NjAwLTItNg==</ReceiptHandle>
</Error>
</Errors>
Códigos de erro
Os erros abaixo são específicos do BatchDeleteMessage. Para erros comuns, consulte Códigos de erro comuns.
|
Código de erro |
Mensagem de erro |
Código de status HTTP |
Descrição |
|
QueueNotExist |
The queue name you provided is not exist. |
404 |
A fila especificada não existe. Verifique o nome da fila na URL da solicitação. |
|
InvalidArgument |
The value of Element should between Low and High seconds/bytes. |
400 |
Um parâmetro da solicitação está fora do intervalo válido. Confirme se todos os valores atendem às restrições documentadas. |
|
ReceiptHandleError |
The receipt handle you provide is not valid. |
400 |
O receipt handle está malformado ou expirou. Receba a mensagem novamente para obter um novo receipt handle. |