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á.
Lógica de entrega de filas FIFO no Amazon SQS
Os conceitos a seguir esclarecem como as filas FIFO do Amazon SQS lidam com o envio e o recebimento de mensagens, especialmente quando lidam com ordenação de mensagens e IDs de grupos de mensagens.
Enviar mensagens
As filas FIFO do Amazon SQS preservam a ordem das mensagens usando IDs de desduplicação e IDs de grupos de mensagens exclusivos. Este tópico destaca a importância dos IDs de grupos de mensagens para manter uma ordenação estrita dentro dos grupos e destaca as práticas recomendadas para garantir a entrega confiável e ordenada de mensagens entre vários produtores.
-
Preservação da ordem
-
Se várias mensagens forem enviadas em sucessão a uma fila FIFO, cada uma com um ID de desduplicação de mensagem distinto, o Amazon SQS armazenará as mensagens e confirmará a transmissão. Essas mensagens serão, então, recebidas e processadas na ordem exata em que foram transmitidas.
-
-
ID do grupo de mensagens
-
Em filas FIFO, as mensagens são ordenadas com base no ID de grupo de mensagens. Se vários produtores ou threads enviarem mensagens com o mesmo ID de grupo de mensagens, o Amazon SQS garante que elas sejam armazenadas e processadas na ordem em que chegarem.
-
Prática recomendada: para garantir uma ordem estrita das mensagens entre vários produtores, atribua um ID de grupo de mensagens exclusivo para todas as mensagens de cada produtor.
-
-
Ordenar por grupo
-
A lógica da fila FIFO aplica-se de acordo com o ID do grupo de mensagens:
-
Cada ID de grupo de mensagens representa um grupo distinto e ordenado.
-
Para cada ID de grupo de mensagens, todas as mensagens são enviadas e recebidas na ordem estrita.
-
Mensagens com IDs de grupo de mensagens diferentes podem chegar ou ser processadas fora de ordem uma em relação à outra.
-
-
Obrigatório: você deve associar um ID de grupo de mensagens a cada mensagem. Se uma mensagem for enviada sem um ID de grupo, a ação falhará.
-
Cenário de grupo único: se você precisar que todas as mensagens sejam processadas em ordem estrita, use o mesmo ID de grupo de mensagens para cada mensagem.
-
Recebimento de mensagens
As filas FIFO do Amazon SQS gerenciam a recuperação de mensagens, incluindo processamento em lote, garantias de ordem FIFO e limitações na solicitação de IDs de grupos de mensagens específicos. Este tópico explica como o Amazon SQS recupera mensagens dentro e entre IDs de grupos de mensagens, mantendo a ordenação estrita e as regras de visibilidade.
-
Recuperação em lote
-
Ao receber mensagens de uma fila FIFO com vários IDs de grupo de mensagens, o Amazon SQS:
-
Tenta retornar o máximo de mensagens possível com o mesmo ID de grupo em uma única chamada.
-
Isso permite que outros clientes processem mensagens de IDs de grupo de mensagens diferentes simultaneamente.
-
-
Esclarecimento importante
-
Você pode receber várias mensagens do mesmo ID de grupo de mensagens em um lote (até 10 mensagens em uma única chamada usando o parâmetro
MaxNumberOfMessages). -
No entanto, você não poderá receber mensagens adicionais do mesmo ID de grupo de mensagens em solicitações subsequentes até que:
-
As mensagens atualmente recebidas sejam excluídas ou
-
Elas se tornem visíveis novamente (por exemplo, após o tempo limite de visibilidade expirar).
-
-
-
-
Garantia de ordem FIFO
-
As mensagens recuperadas em um lote mantêm sua ordem FIFO dentro do grupo.
-
Se menos de 10 mensagens estiverem disponíveis para o mesmo ID de grupo de mensagens, o Amazon SQS poderá incluir mensagens de outros IDs de grupo de mensagens no mesmo lote, mas cada grupo manterá a ordem FIFO.
-
-
Limitações do consumidor
-
Você não pode solicitar explicitamente o recebimento de mensagens de um ID de grupo de mensagens específico.
-
Repetir várias vezes
Produtores e consumidores podem repetir com segurança ações que falharam nas filas FIFO do Amazon SQS sem interromper a ordem das mensagens ou introduzir duplicatas. Este tópico destaca como os IDs de desduplicação e os tempos limite de visibilidade garantem a integridade da mensagem durante novas tentativas.
-
Novas tentativas do produtor
-
Se uma ação
SendMessagefalhar, o produtor pode tentar novamente enviar a mensagem várias vezes com o mesmo ID de desduplicação de mensagens. -
Desde que o produtor receba pelo menos uma confirmação antes que o intervalo de desduplicação expire, as novas tentativas:
-
Não introduzem mensagens duplicadas.
-
Não interrompem a ordem das mensagens.
-
-
-
Novas tentativas do consumidor
-
Se a ação
ReceiveMessagefalhar, o consumidor pode tentar novamente quantas vezes forem necessárias usando o mesmo ID de tentativa de solicitação de recebimento. -
Desde que o consumidor receba pelo menos uma confirmação antes que o tempo limite de visibilidade expire, as novas tentativas:
-
Não interrompem a ordem das mensagens.
-
-
Notas adicionais sobre o comportamento de FIFO
Saiba mais sobre como lidar com os tempos limite de visibilidade, habilitar o processamento paralelo com vários IDs de grupos de mensagens e garantir o processamento sequencial estrito em cenários de grupo único.
-
Gerenciar o tempo limite de visibilidade
-
Quando uma mensagem é recuperada, mas não excluída, ela permanece invisível até que o tempo limite de visibilidade expire.
-
Nenhuma mensagem adicional do mesmo ID de grupo de mensagens será retornada até que a primeira mensagem seja excluída ou fique visível novamente.
-
-
Simultaneidade e processamento paralelo
-
As filas FIFO permitem o processamento paralelo de mensagens em diferentes IDs de grupos de mensagens.
-
Para maximizar a simultaneidade, projete seu sistema com vários IDs de grupos de mensagens para fluxos de trabalho independentes.
-
-
Cenários de grupo único
-
Para o processamento sequencial estrito de todas as mensagens em uma fila FIFO, use um único ID de grupo de mensagens para todas as mensagens na fila.
-
Exemplos para uma melhor compreensão
A seguir estão cenários práticos que ilustram o comportamento da fila FIFO no Amazon SQS.
-
Cenário 1: ID de grupo único
-
Um produtor envia cinco mensagens com o mesmo ID de grupo de mensagens, Grupo A.
-
Um consumidor recebe essas mensagens na ordem FIFO. Até que o consumidor exclua essas mensagens ou o tempo limite de visibilidade expire, nenhuma mensagem adicional do Grupo A será recebida.
-
-
Cenário 2: vários IDs de grupo
-
Um produtor envia cinco mensagens para o Grupo A e 5 para o Grupo B.
-
O Consumidor 1 processa as mensagens do Grupo A, enquanto o Consumidor 2 processa as mensagens do Grupo B. Isso permite o processamento paralelo com ordenação estrita mantida dentro de cada grupo.
-
-
Cenário 3: recuperação em lote
-
Um produtor envia sete mensagens para o Grupo A e três para o Grupo B.
-
Até 10 mensagens podem ser recuperadas por um único consumidor. Se a fila permitir, poderá retornar:
-
Sete mensagens do Grupo A e três do Grupo B (ou menos, se houver menos mensagens disponíveis em um único grupo).
-
-