JP

6 de jan de 20211 min

SQS: Duplicidade de mensagens na fila

Evitar mensagens duplicadas na fila pode ser um requisito básico para o modelo do seu negócio. A SQS possui um recurso de "desduplicação" de mensagens bem interessante.

Este recurso está presente apenas em filas do tipo FIFO

Existe duas formas de configurar:

1. Na configuração da fila, habilite a opção Desduplicação baseada em conteúdo

2. Uma outra forma de configurar seria no ato do envio da mensagem. Neste caso a fila não precisa ser configurada conforme o item 1.

Segue um trecho de código Java utilizando a SDK da AWS que exemplifica este cenário:

AmazonSQS amazonSQS = AmazonSQSClientBuilder.standard()
 
.withRegion(Regions.US_EAST_1)
 
.build();
 

 
SendMessageRequest messageRequest = new SendMessageRequest();
 
messageRequest.setMessageBody("mensagem");
 
messageRequest.setMessageGroupId("id-grupo");
 
messageRequest.setMessageDeduplicationId("id-desduplicação");
 
messageRequest.setQueueUrl("url-da-fila");
 
amazonSQS.sendMessage(messageRequest);

Neste caso é necessário atribuir um ID que identifica a mensagem como duplicada, conforme o trecho:

messageRequest.setMessageDeduplicationId("id-desduplicação");

O código descrito no item 2 pode ser utilizado para o item 1, mas nesse caso, o trecho anterior é opcional.

Ponto de atenção

Este recurso só funciona quando mensagens de mesmo conteúdo são enviadas em um intervalo de até 5 minutos. Caso o intervalo entre elas seja maior que 5 minutos, a fila receberá a mensagem duplicada.

    0