Todos os produtos
Search
Central de documentação

Simple Message Queue (formerly MNS):ChangeMessageVisibility

Última atualização: Jun 27, 2026

Altera o tempo limite de visibilidade de uma mensagem consumida e controla por quanto tempo ela permanece invisível para outros consumidores antes de ficar disponível para nova entrega.

Como funciona

Quando um consumidor recebe uma mensagem de uma fila, ela se torna invisível para outros consumidores durante um período chamado tempo limite de visibilidade. Nesse intervalo, o consumidor processa e exclui a mensagem. Se o processamento demorar mais do que o esperado, chame ChangeMessageVisibility para estender o tempo limite e evitar que outro consumidor receba a mesma mensagem.

O novo tempo limite de visibilidade começa a contar no momento da chamada ChangeMessageVisibility, e não quando a mensagem foi recebida originalmente.

Exemplo: Uma fila tem tempo limite de visibilidade de 60 segundos. Um consumidor recebe uma mensagem e inicia o processamento. Após 15 segundos, o processamento ainda está em andamento. O consumidor chama ChangeMessageVisibility com VisibilityTimeout definido como 30. A mensagem permanece invisível por mais 30 segundos a partir dessa chamada. Ela se torna visível novamente 45 segundos após o recebimento inicial (15 + 30), e não após 90 segundos (60 + 30).

Autorização

Por padrão, apenas contas Alibaba Cloud podem chamar esta operação. Usuários do Resource Access Management (RAM) precisam receber as permissões necessárias antecipadamente. Para mais detalhes, consulte Políticas de permissão e exemplos.

Item

Valor

API

ChangeMessageVisibility

Action

mns:ChangeMessageVisibility

Resource

acs:mns:$region:$accountid:/queues/$queueName/messages

Requisição

Linha de requisição

PUT /queues/$queueName/messages?receiptHandle=<receiptHandle>&visibilityTimeout=<visibilitytimeout> HTTP/1.1

Parâmetros de URI

Parâmetro

Tipo

Obrigatório

Exemplo

Descrição

ReceiptHandle

String

Sim

MbZj6wDWli+QEauMZc8ZRv37sIW2iJKq3M9Mx/KSbkJ0

Handle de recibo retornado na última vez em que a mensagem foi consumida. Para mais detalhes, consulte ReceiveMessage.

VisibilityTimeout

Integer

Sim

50

Novo tempo limite de visibilidade em segundos. Valores válidos: 1 a 43200 (1 segundo a 12 horas).

Cabeçalhos da requisição

Esta operação não usa cabeçalhos de requisição específicos. Apenas os cabeçalhos comuns são utilizados.

Corpo da requisição

Nenhum.

Resposta

Código de status

HTTP/1.1 200 OK

Cabeçalhos da resposta

Esta operação não retorna cabeçalhos de resposta específicos. Apenas os cabeçalhos comuns são retornados.

Corpo da resposta

O corpo da resposta está no formato XML:

Parâmetro

Tipo

Exemplo

Descrição

ReceiptHandle

String

TbZj6wDWli+9CEauMZc8ZRv37sIW2iJKq3M9Mx/TS1

Novo handle de recibo, válido até NextVisibleTime. Use este handle para operações subsequentes de exclusão ou modificação da mensagem. O handle de recibo anterior deixa de ser válido.

NextVisibleTime

Long

1250700979298000

Momento em que a mensagem se torna visível novamente, representado como timestamp UNIX em milissegundos desde 1º de janeiro de 1970, 00:00:00 UTC.

Exemplos

Exemplo de requisição

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****

Exemplo de resposta

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 erro

Código de erro

Mensagem de erro

Código de status HTTP

Descrição

InvalidArgument

The value of Element must be between Low and High seconds/bytes.

400

O valor do parâmetro está fora do intervalo permitido. Especifique um valor dentro do intervalo válido.

ReceiptHandleError

The receipt handle you provided is not valid.

400

O handle de recibo é inválido. Obtenha um handle válido chamando ReceiveMessage.

QueueNotExist

The queue name you provided does not exist.

404

A fila especificada não existe. Verifique o nome da fila ou crie-a antes de continuar.

MessageNotExist

The receipt handle you provided has expired.

404

A mensagem tornou-se visível novamente antes da conclusão do processamento e o handle de recibo expirou. Consuma as mensagens antes que o tempo limite de visibilidade expire ou estenda esse prazo chamando ChangeMessageVisibility com antecedência.

Operações relacionadas

As operações abaixo são frequentemente utilizadas em conjunto no fluxo de processamento de mensagens:

  1. ReceiveMessage — Receba uma mensagem e obtenha seu handle de recibo.

  2. ChangeMessageVisibility — Estenda o tempo limite de visibilidade caso o processamento demore mais do que o previsto.

  3. DeleteMessage — Exclua a mensagem após a conclusão do processamento.