Como evitar um aumento do atraso de mensagens na minha fila Amazon SQS?

Data da última atualização: 26/08/2021

O atraso de mensagens na minha fila do Amazon Simple Queue Service (Amazon SQS) está aumentando. Por que isso acontece e como posso evitar o aumento do atraso?

Descrição breve

Filas padrão e FIFO SQS

O atraso de mensagens aumenta nas seguintes circunstâncias:

  • Os produtores enviam mensagens em um ritmo mais rápido do que as mensagens são consumidas.
  • Os consumidores não excluem mensagens dentro do período de tempo limite de visibilidade. Quando a fila SQS é pesquisada, as mensagens reaparecem na fila.

Filas FIFO SQS

Para as filas FIFO SQS (First-In-First-Out), um aumento no atraso de mensagens também pode resultar de qualquer um dos seguintes:

  • O limite do buffer é de 20.000 mensagens da fila FIFO.
  • Uma mensagem que pertence a um grupo de mensagens fica presa a um consumidor, impedindo que outras mensagens do mesmo grupo de mensagens sejam processadas.

Resolução

Siga estas práticas recomendadas para evitar que o atraso de mensagens aumente.

Filas padrão e FIFO SQS

  • Defina o tempo limite de visibilidade ideal da fila SQS para permitir que o consumidor exclua mensagens após processá-las dentro do período de tempo limite de visibilidade. Se você não sabe quanto tempo leva para processar uma mensagem, crie uma frequência para o processo do consumidor. Especifique o tempo limite de visibilidade inicial (por exemplo, 2 minutos). Em seguida, se o consumidor precisar de mais tempo para processar a mensagem, continue aumentando o tempo limite de visibilidade usando a chamada da API ChangeMessageVisibility.
  • Aumente o tamanho do lote ao fazer chamadas à API ReceiveMessage. Defina o valor do parâmetro MaxNumberOfMessages para mais de 1 e até um máximo de 10.
  • Monitore a métrica de fila SQS, número aproximado de mensagens visíveis. Esta métrica permite que você veja se os produtores começam a produzir mensagens a uma taxa maior do que os consumidores podem consumir as mensagens. Para escalar horizontalmente, aumente o número de consumidores ou clientes que consomem a fila SQS ou aumente o número de threads que pesquisam a fila.

Filas FIFO SQS

Buffer de 20.000 mensagens

As filas FIFO permitem um máximo de 20.000 mensagens de ingresso. As mensagens de ingresso incluem aquelas recebidas de uma fila por um consumidor, mas ainda não excluídas da fila. Se você atingir a cota de 20.000, o Amazon SQS não retornará mensagens de erro. Uma fila FIFO examina as primeiras 20.000 mensagens para determinar os grupos de mensagens disponíveis. Se você tiver um atraso de mensagens em um único grupo de mensagens, não poderá consumir mensagens de outros grupos de mensagens até consumir com êxito as mensagens da lista de pendências.

Escalonamento do grupos de mensagens

As mensagens que pertencem ao mesmo grupo de mensagens são processadas uma a uma, na ordem relativa ao grupo de mensagens. Ao receber mensagens com vários IDs de grupo de mensagens, o Amazon SQS tenta retornar primeiramente o maior número possível de mensagens com o mesmo ID de grupo de mensagens. Isso permite que outros consumidores processem mensagens com um ID de grupo de mensagens diferente. Quando as mensagens que pertencem a um ID de grupo de mensagens específico são invisíveis, nenhum outro consumidor pode processar mensagens com o mesmo ID de grupo de mensagens. No entanto, os consumidores podem processar mensagens de outros grupos de mensagens. Tente aumentar o número de grupos de mensagens em que a ordem não é importante.


Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?