• JP

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.



Posts recentes

Ver tudo