Modifique el tiempo de espera de visibilidad de un mensaje consumido. Esta operación controla cuánto tiempo permanece invisible para otros consumidores antes de estar disponible nuevamente para su entrega.
Funcionamiento
Cuando un consumidor recibe un mensaje de una cola, este se vuelve invisible para otros consumidores durante un periodo denominado tiempo de espera de visibilidad. Durante este intervalo, el consumidor procesa y elimina el mensaje. Si el procesamiento tarda más de lo previsto, llame a ChangeMessageVisibility para extender el tiempo de espera y evitar que otro consumidor reciba el mismo mensaje.
El nuevo tiempo de espera de visibilidad comienza desde el momento en que se realiza la llamada a ChangeMessageVisibility, no desde que se recibió originalmente el mensaje.
Ejemplo: Una cola tiene un tiempo de espera de visibilidad de 60 segundos. Un consumidor recibe un mensaje y comienza a procesarlo. Después de 15 segundos, el procesamiento aún continúa, por lo que el consumidor llama a ChangeMessageVisibility con VisibilityTimeout establecido en 30. El mensaje permanece invisible durante 30 segundos adicionales a partir de esa llamada; es decir, vuelve a ser visible 45 segundos después de haberse recibido por primera vez (15 + 30), y no a los 90 segundos (60 + 30).
Autorización
De forma predeterminada, solo las cuentas de Alibaba Cloud pueden llamar a esta operación. Los usuarios de Resource Access Management (RAM) deben contar primero con los permisos obligatorios. Para obtener más información, consulte Permission policies and examples.
|
Elemento |
Valor |
|
API |
ChangeMessageVisibility |
|
Action |
mns:ChangeMessageVisibility |
|
Resource |
acs:mns:$region:$accountid:/queues/$queueName/messages |
Solicitud
Línea de solicitud
PUT /queues/$queueName/messages?receiptHandle=<receiptHandle>&visibilityTimeout=<visibilitytimeout> HTTP/1.1
Parámetros URI
|
Parámetro |
Tipo |
Obligatorio |
Ejemplo |
Descripción |
|
ReceiptHandle |
String |
Sí |
MbZj6wDWli+QEauMZc8ZRv37sIW2iJKq3M9Mx/KSbkJ0 |
Identificador de recepción devuelto cuando se consumió el mensaje por última vez. Para obtener más información, consulte ReceiveMessage. |
|
VisibilityTimeout |
Integer |
Sí |
50 |
Nuevo tiempo de espera de visibilidad en segundos. Valores válidos: de 1 a 43200 (de 1 segundo a 12 horas). |
Encabezados de solicitud
No existen encabezados de solicitud específicos para esta operación. Solo se utilizan los encabezados de solicitud comunes.
Cuerpo de la solicitud
Ninguna.
Respuesta
Código de estado
HTTP/1.1 200 OK
Encabezados de respuesta
No existen encabezados de respuesta específicos para esta operación. Solo se devuelven los encabezados de respuesta comunes.
Cuerpo de la respuesta
El cuerpo de la respuesta está en formato XML:
|
Parámetro |
Tipo |
Ejemplo |
Descripción |
|
ReceiptHandle |
String |
TbZj6wDWli+9CEauMZc8ZRv37sIW2iJKq3M9Mx/TS1 |
Nuevo identificador de recepción, válido hasta |
|
NextVisibleTime |
Long |
1250700979298000 |
Momento en que el mensaje vuelve a ser visible, expresado como marca de tiempo UNIX en milisegundos desde el 1 de enero de 1970, 00:00:00 UTC. |
Ejemplos
Solicitud de ejemplo
PUT /queues/$queueName/messages
?receiptHandle=MbZj6wDWli+QEauMZc8ZRv37sIW2iJKq3M9Mx/KSbkJ0&visibilityTimeout=50 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
x-mns-request-id:512B2A634403E52B1956****
x-mns-version: 2015-06-06
<?xml version="1.0" encoding="UTF-8"?>
<ChangeVisibility xmlns="http://mns.aliyuncs.com/doc/v1/">
<ReceiptHandle>TbZj6wDWli+9CEauMZc8ZRv37sIW2iJKq3M9Mx/TS1</ReceiptHandle>
<NextVisibleTime>1250700979298000</NextVisibleTime>
</ChangeVisibility>
Códigos de error
|
Código de error |
Mensaje de error |
Código de estado HTTP |
Descripción |
|
InvalidArgument |
The value of Element must be between Low and High seconds/bytes. |
400 |
El valor del parámetro está fuera del rango permitido. Especifique un valor dentro del rango válido. |
|
ReceiptHandleError |
The receipt handle you provided is not valid. |
400 |
El identificador de recepción no es válido. Obtenga un identificador de recepción válido mediante la llamada a ReceiveMessage. |
|
QueueNotExist |
The queue name you provided does not exist. |
404 |
La cola especificada no existe. Compruebe el nombre de la cola o créela primero. |
|
MessageNotExist |
The receipt handle you provided has expired. |
404 |
El mensaje volvió a ser visible antes de que finalizara el procesamiento, y el identificador de recepción caducó. Consuma los mensajes antes de que expire el tiempo de espera de visibilidad, o extienda dicho tiempo llamando a |
Operaciones relacionadas
A continuación se presentan las operaciones que suelen utilizarse de forma conjunta en un flujo de trabajo de procesamiento de mensajes:
ReceiveMessage -- Recibir un mensaje y obtener su identificador de recepción.
ChangeMessageVisibility -- Extender el tiempo de espera de visibilidad si el procesamiento tarda más de lo previsto.
DeleteMessage -- Eliminar el mensaje una vez completado el procesamiento.