As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Processamento de mensagens em tempo hábil no Amazon SQS
Definir o tempo limite de visibilidade depende do tempo de que o seu aplicativo precisa para processar e excluir uma mensagem. Por exemplo, se seu aplicativo exigir 10 segundos para processar uma mensagem e você definir o tempo limite de visibilidade como 15 minutos, deverá esperar por um tempo relativamente longo para tentar processar a mensagem novamente se a tentativa de processamento anterior falhar. Como alternativa, se o aplicativo exigir 10 segundos para processar uma mensagem, mas você definir o tempo limite de visibilidade como apenas 2 segundos, uma mensagem duplicada será recebida por outro consumidor enquanto o consumidor original ainda estiver trabalhando na mensagem.
Para garantir que haja tempo suficiente para processar mensagens, use uma das seguintes estratégias:
-
Se você souber (ou puder razoavelmente estimar) quanto tempo leva para processar uma mensagem, amplie o tempo limite de visibilidade da mensagem para o máximo de tempo necessário para processar e excluir a mensagem. Para obter mais informações, consulte Configurar tempo limite de visibilidade.
-
Se você não souber quanto tempo leva para processar uma mensagem, crie uma pulsação para o processo do consumidor: especifique o tempo limite de visibilidade inicial (por exemplo, 2 minutos) e, desde que o consumidor ainda funcione na mensagem, continue estendendo o tempo limite de visibilidade em 2 minutos a cada minuto.
Importante
O tempo limite de visibilidade máximo é de 12 horas a partir do momento em que o Amazon SQS recebe
ReceiveMessage
. Estender o tempo limite de visibilidade não redefine o período máximo de 12 horas.Além disso, talvez você não consiga definir o tempo limite em uma mensagem individual para as 12 horas completas (por exemplo, 43.200 segundos), pois a solicitação de
ReceiveMessage
inicia o temporizador. Por exemplo, se você receber uma mensagem e definir imediatamente o máximo de 12 horas enviando uma chamada deChangeMessageVisibility
comVisibilityTimeout
igual a 43.200 segundos, provavelmente ocorrerá uma falha. No entanto, usar um valor de 43.195 segundos funcionará, a menos que haja um atraso significativo entre a solicitação da mensagem viaReceiveMessage
e a atualização do tempo limite de visibilidade. Se o consumidor precisar de mais de 12 horas, considere usar o Step Functions.