Usar o ID de eliminação de duplicação de mensagens do Amazon SQS - Amazon Simple Queue Service

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á.

Usar o ID de eliminação de duplicação de mensagens do Amazon SQS

O ID de eliminação de duplicação de mensagens é o token usado para a eliminação de duplicação de mensagens enviadas. Se uma mensagem com um ID de eliminação de duplicação de mensagens específico for enviada com êxito, todas as mensagens enviadas com o mesmo ID de eliminação de duplicação de mensagens serão aceitas com êxito, mas não serão entregues durante o intervalo de eliminação de duplicação de cinco minutos.

nota

O Amazon SQS continua acompanhando o ID de eliminação de duplicação da mensagem mesmo depois que a mensagem é recebida e excluída.

Fornecer o ID de eliminação de duplicação de mensagens

O produtor deve fornecer valores de ID de eliminação de duplicação de mensagens para cada mensagem nos seguintes cenários:

  • Mensagens enviadas com corpos idênticos, mas que o Amazon SQS deve tratar como únicas.

  • Mensagens enviadas com conteúdo idêntico, mas com diferentes atributos, que o Amazon SQS deve tratar como únicas.

  • Mensagens enviadas com conteúdo diferente (por exemplo, contagens de repetições incluídas no corpo da mensagem), que o Amazon SQS deve tratar como duplicações.

Habilitar a eliminação de duplicação para um sistema de produtor/consumidor único

Se você tiver um único produtor e um único consumidor e as mensagens forem exclusivas porque um ID de mensagem específico do aplicativo foi incluído no corpo da mensagem, siga estas melhores práticas:

  • Ative a eliminação de duplicação baseada em conteúdo para a fila (cada uma de suas mensagens tem um único corpo). O produtor pode omitir o ID de eliminação de duplicação de mensagem.

  • Embora o consumidor não seja obrigado a fornecer um ID de tentativa de solicitação de recebimento, isso é uma prática recomendada porque permite que sequências de tentativa de recuperação de falhas sejam executadas mais rapidamente.

  • Você pode tentar enviar ou receber solicitações novamente, porque elas não interferem na ordenação de mensagens em filas FIFO.

Projetar para cenários de recuperação de interrupção

O processo de eliminação de duplicação em filas FIFO é depende do tempo. Ao projetar sua aplicação, garanta que o produtor e o consumidor possam se recuperar em caso de interrupção de comunicação de um cliente ou da rede.

  • O produtor deve estar ciente do intervalo de eliminação de duplicação da fila. O Amazon SQS tem um intervalo de eliminação de duplicação de cinco minutos. Repetir solicitações SendMessage após a expiração do intervalo da eliminação de duplicação pode introduzir mensagens duplicadas na fila. Por exemplo, um dispositivo móvel em um carro envia mensagens cuja ordem é importante. Se o carro perder a conectividade celular por um período antes de receber uma confirmação, tentar novamente a solicitação depois de recuperada a conectividade celular pode criar uma duplicação.

  • O consumidor deve ter um tempo limite de visibilidade que minimize o risco de não conseguir processar as mensagens antes que o tempo limite de visibilidade expire. Você pode estender o tempo limite de visibilidade enquanto as mensagens estão sendo processadas chamando a ação ChangeMessageVisibility. No entanto, se o tempo limite de visibilidade expirar, outro consumidor poderá começar imediatamente a processar as mensagens, fazendo com que uma mensagem seja processada várias vezes. Para evitar essa situação, configure uma dead letter queue.

Como trabalhar com tempos limite de visibilidade

Para obter performance ideal, defina o tempo limite de visibilidade como um valor maior do que o tempo limite de leitura do AWS SDK. Isso se aplica ao uso da ação de API ReceiveMessage com sondagem curta ou sondagem longa.