Recebe uma mensagem de uma fila e a define como Inativa durante o período de VisibilityTimeout da fila. Chame DeleteMessage antes que esse período expire para remover a mensagem permanentemente. Se você não a excluir a tempo, a mensagem retornará ao estado Ativo e ficará disponível para consumo novamente.
Informações de autorização
Por padrão, apenas uma conta Alibaba Cloud pode chamar esta operação. Para chamá-la como usuário do Resource Access Management (RAM), conceda as permissões necessárias ao usuário RAM. Para obter mais informações, consulte Políticas de permissão e exemplos.
|
Item |
Valor |
|
Operação de API |
ReceiveMessage |
|
Ação |
mns:ReceiveMessage |
|
Recurso |
acs:mns:$region:$accountid:/queues/$queueName/messages |
Sintaxe da solicitação
GET /queues/$queueName/messages?waitseconds=10 HTTP/1.1
Esta operação não tem cabeçalhos ou corpo de solicitação específicos.
Parâmetros de URI
|
Parâmetro |
Tipo |
Obrigatório |
Exemplo |
Descrição |
|
waitseconds |
Integer |
Não |
0 |
Tempo máximo de espera em segundos quando nenhuma mensagem estiver disponível. Se omitido, aplica-se o valor de |
Comportamento de long polling
Quando waitseconds está definido (ou o valor padrão da fila PollingWaitSeconds se aplica), o servidor mantém a conexão aberta até a chegada de uma mensagem ou o fim do período de espera. O sistema entrega imediatamente qualquer mensagem gravada na fila durante esse intervalo.
Recomendamos reduzir o número de solicitações simultâneas de long polling e especifique um período de espera adequado. Para obter mais informações, consulte Short polling e long polling.
O Simple Message Queue (SMQ, anteriormente MNS) limita as solicitações simultâneas de long polling com base no total de solicitações, nos períodos de espera e nos endereços IP de source. Ao exceder esse limite, o SMQ retorna imediatamente um erro 404 MessageNotExist sem reter a solicitação, e as cobranças padrão se aplicam. Para aumentar esse limite, envie um ticket.
Resposta
Código de status HTTP
HTTP/1.1 200 OK
Esta operação não tem cabeçalhos de resposta específicos.
Corpo da resposta
O corpo da resposta está em formato XML e contém:
Corpo da mensagem e respectivo hash MD5
ID exclusivo da mensagem
Receipt handle para exclua ou modificar a mensagem enquanto ela estiver Inativa
Carimbos de data/hora: hora de enfileiramento, primeiro desenfileiramento e próxima visibilidade
Contagem de desenfileiramentos
|
Parâmetro |
Tipo |
Exemplo |
Descrição |
|
MessageId |
String |
5F290C926D472878-2-14D9529A8FA-20000\\\\ |
Identificador exclusivo da mensagem na fila. |
|
ReceiptHandle |
String |
1-ODU4OTkzNDU5My0xNDMyNzI3ODI3LTItOA== |
Handle para exclua ou modificar a mensagem enquanto ela estiver Inativa. Use este valor ao chamar DeleteMessage ou ChangeMessageVisibility. Válido até |
|
MessageBody |
String |
This is a test message |
Conteúdo da mensagem. |
|
MessageBodyMD5 |
String |
C5DD56A39F5F7BB8B3337C6D11B6\\\\ |
Hash MD5 do corpo da mensagem. |
|
EnqueueTime |
Long |
1250700979248 |
Momento de envio da mensagem para a fila. Timestamp UNIX em milissegundos desde 1º de janeiro de 1970, 00:00:00 UTC. |
|
NextVisibleTime |
Long |
1250700799348 |
Momento em que a mensagem se torna visível novamente caso não seja excluída. Timestamp UNIX em milissegundos desde 1º de janeiro de 1970, 00:00:00 UTC. |
|
FirstDequeueTime |
Long |
1250700779318 |
Momento do primeiro consumo da mensagem. Timestamp UNIX em milissegundos desde 1º de janeiro de 1970, 00:00:00 UTC. |
|
DequeueCount |
Integer |
1 |
Número de vezes que a mensagem foi consumida. |
Exemplos
Exemplo de solicitação
GET /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****
Exemplo de resposta
HTTP/1.1 200 OK
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"?>
<Message xmlns="http://mns.aliyuncs.com/doc/v1/">
<MessageId>5F290C926D472878-2-14D9529A8FA-20000****</MessageId>
<ReceiptHandle>1-ODU4OTkzNDU5My0xNDMyNzI3ODI3LTItOA==</ReceiptHandle>
<MessageBodyMD5>C5DD56A39F5F7BB8B3337C6D11B6****</MessageBodyMD5>
<MessageBody>This is a test message</MessageBody>
<EnqueueTime>1250700979248</EnqueueTime>
<NextVisibleTime>1250700799348</NextVisibleTime>
<FirstDequeueTime>1250700779318</FirstDequeueTime>
<DequeueCount>1</DequeueCount>
<Priority>8</Priority>
</Message>
Códigos de erro
|
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. Crie uma fila antes de chamar esta operação. |
|
MessageNotExist |
Message not exist. |
404 |
Não há mensagens visíveis na fila. |
Próximos passos
Receba várias mensagens em uma única chamada: BatchReceiveMessage
Exclua uma mensagem consumida: DeleteMessage
Configure atributos da fila, como
VisibilityTimeoutePollingWaitSeconds: CreateQueue