Recibe un mensaje de una cola y lo establece en estado Inactive durante el periodo de VisibilityTimeout de la cola. Llame a DeleteMessage antes de que expire este periodo para eliminar el mensaje de forma permanente. Si no se elimina a tiempo, el mensaje vuelve al estado Active y queda disponible nuevamente para su consumo.
Información de autorización
De forma predeterminada, solo una cuenta de Alibaba Cloud puede llamar a esta operación. Para llamarla como usuario de Resource Access Management (RAM), otorgue los permisos obligatorios al usuario de RAM. Para obtener más información, consulte Permission policies and examples.
|
Elemento |
Valor |
|
Operación de API |
ReceiveMessage |
|
Acción |
mns:ReceiveMessage |
|
Recurso |
acs:mns:$region:$accountid:/queues/$queueName/messages |
Sintaxis de la solicitud
GET /queues/$queueName/messages?waitseconds=10 HTTP/1.1
Esta operación no tiene encabezados ni cuerpo de solicitud específicos.
Parámetros de URI
|
Parámetro |
Tipo |
Obligatorio |
Ejemplo |
Descripción |
|
waitseconds |
Integer |
No |
0 |
Tiempo máximo de espera en segundos cuando no hay mensajes disponibles. Si se omite, se aplica el valor de |
Comportamiento del sondeo largo
Cuando se establece waitseconds (o se aplica el valor predeterminado de PollingWaitSeconds de la cola), el servidor mantiene la conexión hasta que llega un mensaje o expira el periodo de espera. Cualquier mensaje escrito en la cola durante este periodo se entrega de inmediato.
Se recomienda reducir el número de solicitudes concurrentes de sondeo largo y especificar un periodo de espera adecuado. Para obtener más información, consulte Short polling and long polling.
Simple Message Queue (SMQ, anteriormente MNS) limita las solicitudes concurrentes de sondeo largo según el número total de solicitudes, los periodos de espera y las direcciones IP de origen. Cuando se supera este límite, SMQ devuelve inmediatamente un error 404 MessageNotExist sin retener la solicitud, y se aplican los cargos estándar por solicitud. Para aumentar este límite, envíe un ticket.
Respuesta
Código de estado HTTP
HTTP/1.1 200 OK
Esta operación no tiene encabezados de respuesta específicos.
Cuerpo de la respuesta
El cuerpo de la respuesta está en formato XML y contiene:
El cuerpo del mensaje y su hash MD5
Un ID de mensaje único
Un identificador de recibo para eliminar o modificar el mensaje mientras está en estado Inactive
Marcas de tiempo: hora de envío a la cola, hora de primera extracción y próxima hora de visibilidad
Recuento de extracciones
|
Parámetro |
Tipo |
Ejemplo |
Descripción |
|
MessageId |
String |
5F290C926D472878-2-14D9529A8FA-20000\\\\ |
Identificador único del mensaje dentro de la cola. |
|
ReceiptHandle |
String |
1-ODU4OTkzNDU5My0xNDMyNzI3ODI3LTItOA== |
Identificador para eliminar o modificar el mensaje mientras está en estado Inactive. Utilice este valor cuando llame a DeleteMessage o a ChangeMessageVisibility. Válido hasta |
|
MessageBody |
String |
This is a test message |
Contenido del mensaje. |
|
MessageBodyMD5 |
String |
C5DD56A39F5F7BB8B3337C6D11B6\\\\ |
Hash MD5 del cuerpo del mensaje. |
|
EnqueueTime |
Long |
1250700979248 |
Hora en que el mensaje se envió a la cola. Marca de tiempo UNIX en milisegundos desde el 1 de enero de 1970, 00:00:00 UTC. |
|
NextVisibleTime |
Long |
1250700799348 |
Hora en que el mensaje vuelve a ser visible si no se elimina. Marca de tiempo UNIX en milisegundos desde el 1 de enero de 1970, 00:00:00 UTC. |
|
FirstDequeueTime |
Long |
1250700779318 |
Hora en que el mensaje se consumió por primera vez. Marca de tiempo UNIX en milisegundos desde el 1 de enero de 1970, 00:00:00 UTC. |
|
DequeueCount |
Integer |
1 |
Número de veces que se ha consumido el mensaje. |
Ejemplos
Solicitud de ejemplo
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****
Respuesta de ejemplo
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 error
|
Código de error |
Mensaje de error |
Código de estado HTTP |
Descripción |
|
QueueNotExist |
The queue name you provided is not exist. |
404 |
La cola especificada no existe. Cree una cola antes de llamar a esta operación. |
|
MessageNotExist |
Message not exist. |
404 |
No existe ningún mensaje visible en la cola. |
Pasos siguientes
Recibir varios mensajes en una sola llamada: BatchReceiveMessage
Eliminar un mensaje consumido: DeleteMessage
Configurar atributos de la cola como
VisibilityTimeoutyPollingWaitSeconds: CreateQueue