Consumindo Mensagens

Consumir mensagens de uma fila e seus canais.

O consumo de mensagens exige permissões para a fila e acesso ao ponto final de Mensagens.

Uma resposta a uma solicitação GetMessages contém a lista de mensagens com seu payload, ID da mensagem, tempo de expiração, timeout de visibilidade, contagem de entregas e um receipt. O número máximo de mensagens que podem ser retornadas em uma resposta é 20, mas o número real de mensagens retornadas depende do número de mensagens disponíveis e se a solicitação usou polling longo.

Os consumidores são responsáveis por atualizar mensagens e excluir mensagens, que exigem o receipt da mensagem.

Bloqueio de mensagens

Os consumidores podem "bloquear" uma mensagem recuperada da fila para que outro consumidor não possa recuperar a mesma mensagem. As mensagens são bloqueadas especificando um timeout de visibilidade. A API do serviço Queue usa o parâmetro visibilityInSeconds para definir esse valor.

O timeout de visibilidade pode ser definido no nível da fila ao criar uma fila ou pode ser especificado ao consumir ou atualizar mensagens. Se um consumidor tiver dificuldade em processar uma mensagem com sucesso, ele poderá atualizá-la para estender sua invisibilidade. Se o tempo limite de visibilidade de uma mensagem não for estendido e o consumidor não excluir a mensagem, ela retornará à fila.

Ao consumir, você não precisa especificar o timeout de visibilidade. O tempo limite de visibilidade configurado para a fila se aplica à solicitação. Ao criar uma fila, o timeout de visibilidade padrão é de 30 segundos. Se você incluir o parâmetro de tempo limite de visibilidade opcional em uma solicitação, poderá especificar um valor mínimo de 0 segundos e um valor máximo de 12 horas.

O uso de um timeout de visibilidade igual a 0 age de fato como funcionalidade de view rápida. As mensagens recuperadas dessa maneira muito provavelmente serão entregues a outro consumidor, porque sua visibilidade não muda.

Contagem de entregas

Cada vez que uma mensagem é recuperada usando uma solicitação GetMessages ou por sondagem da Console, sua contagem de entregas aumenta. Se a contagem de entregas exceder o máximo configurado da fila, a mensagem será enviada para a fila de mensagens não processadas.

Sondagem longa

Por padrão, uma solicitação GetMessages usa uma sondagem longa. A solicitação aguarda mensagens por 30 segundos e, se o timeout ocorrer e nenhuma mensagem estiver disponível para consumo, a solicitação retornará uma resposta vazia. A sondagem longa é útil para evitar novas tentativas de loop estreito em respostas vazias.

Os consumidores podem alterar esse comportamento incluindo o parâmetro timeoutInSeconds em sua solicitação, que aceita valores de 0 a 30 segundos. A definição do valor timeoutInSeconds como 0 resulta em uma resposta imediata da fila, quer haja ou não mensagens disponíveis.