Quando um consumidor recebe uma mensagem de uma fila, a mensagem fica temporariamente invisível para outros consumidores. Isso impede que vários consumidores processem a mesma mensagem simultaneamente. A duração dessa invisibilidade é controlada pelo período de tempo limite de visibilidade.
Estados visível e invisível
Uma mensagem em uma fila do Simple Message Queue (SMQ, formerly MNS) tem dois estados:
Visível: A mensagem está disponível na fila. Qualquer consumidor pode recebê-la e processá-la. Um consumidor é um serviço ou aplicativo que recebe e processa mensagens.
Invisível: Um consumidor recebeu a mensagem. Outros consumidores não podem vê-la nem recebê-la até que o período de tempo limite de visibilidade expire.
Ciclo de vida da mensagem
Um produtor envia uma mensagem para a fila. A mensagem está visível.
Um consumidor recebe a mensagem. Ela fica invisível e o período de tempo limite de visibilidade começa.
O consumidor processa a mensagem e a exclui da fila.
Se o consumidor não excluir a mensagem antes do período de tempo limite de visibilidade expirar, a mensagem ficará visível novamente e poderá ser recebida pelo mesmo consumidor ou por um diferente.
Período de tempo limite de visibilidade
O período de tempo limite de visibilidade é a duração entre o momento em que um consumidor recebe uma mensagem e o momento em que essa mensagem fica visível para outros consumidores novamente.
| Parâmetro | Valor |
|---|---|
| Valores válidos | 1 a 143.200 segundos (12 horas) |
| Padrão | 30 segundos |
Recuperação de falhas
Se um consumidor falhar ao processar e excluir uma mensagem — por erros no aplicativo, falhas ou problemas de conexão — a mensagem fica visível novamente de forma automática após o término do período de tempo limite de visibilidade. Outro consumidor pode então buscá-la para reprocessamento.
Um tempo limite de visibilidade muito alto atrasa a recuperação de falhas. Por exemplo, com um tempo limite de 12 horas, outros consumidores precisam aguardar as 12 horas completas antes de poder reprocessar a mensagem, mesmo que o consumidor original tenha falhado logo após recebê-la.
Definir o período de tempo limite de visibilidade
Console
Defina o Visibility Timeout Period ao criar ou editar uma fila. Para mais informações, consulte Criar uma fila.
API
Chame a operação ChangeMessageVisibility para ajustar o período de tempo limite de visibilidade de uma mensagem já recebida.