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

3 minuto de leitura
0

O acúmulo de mensagens na minha fila do Amazon Simple Queue Service (Amazon SQS) aumentou e eu quero evitar aumentos.

Breve descrição

Filas SQS padrão e FIFO

O acúmulo 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 tempo limite de visibilidade. Quando a fila do SQS é pesquisada, as mensagens reaparecem na fila.

Filas SQS FIFO

Para filas SQS FIFO (First-In-First-Out), um aumento no acúmulo de mensagens também pode resultar de uma das seguintes situações:

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

Resolução

Siga essas práticas recomendadas para evitar o aumento do acúmulo de mensagens.

Filas SQS padrão e FIFO

  • Defina o tempo limite de visibilidade ideal da fila do SQS para permitir que o consumidor exclua mensagens após processá-las dentro do tempo limite de visibilidade. Se você não sabe quanto tempo leva para processar uma mensagem, crie uma pulsação para seu processo de consumo. Especifique o tempo limite de visibilidade inicial (por exemplo, dois minutos). Se o consumidor precisar de mais tempo para processar a mensagem, use a chamada de API ChangeMessageVisibility para aumentar o tempo limite de visibilidade.
  • Aumente o tamanho do lote ao fazer chamadas de API ReceiveMessage. Defina o valor do parâmetro maxNumberOfMessages para mais de 1 e até um máximo de 10.
  • Monitore a métrica da fila do SQS Número aproximado de mensagens visíveis. Essa métrica permite que você veja se os produtores começam a produzir mensagens em 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 do SQS ou aumente o número de threads que pesquisam a fila.

Filas SQS FIFO

Buffer de 120.000 mensagens

As filas FIFO permitem no máximo 120.000 mensagens em andamento. As mensagens em andamento incluem aquelas recebidas de uma fila por um consumidor, mas ainda não foram excluídas da fila. Se você atingir a cota de 120.000, o Amazon SQS não retornará mensagens de erro.

Uma fila FIFO analisa as primeiras 120.000 mensagens para determinar os grupos de mensagens disponíveis. Se você tiver um acúmulo de mensagens em um único grupo de mensagens, não poderá consumir mensagens de outros grupos de mensagens até consumir com êxito as mensagens do backlog.

Escalando 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. Quando você recebe mensagens com vários IDs de grupos de mensagens, o Amazon SQS tenta retornar 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.

AWS OFICIAL
AWS OFICIALAtualizada há 4 meses