1
resposta

Gravação paralela no banco com SpringBoot

Estou enfrentando uma dificuldade na api quando tenho requisiçoes paralelas. Faço um validaçao no banco, caso exista uma linha com mesmos parametros, eu apenas atualizo o valor da linha, mas caso nao exista gero uma nova. Funciona muito bem quando faço apenas uma requisiçao por vez, mas quando tenho duas requisiçoes "simultaneas", as vezes, a validaçao nao funciona.

Devo usar uma biblioteca de filas para resolver, ou teria outra forma de resolver? Caso necessite de filas, qual biblioteca recomendam?

Desde de já agradeço.

1 resposta

Oi Weverton, tudo bem?

Entendo que você está enfrentando dificuldades ao lidar com requisições paralelas em sua API no SpringBoot. É importante garantir que a validação no banco de dados funcione corretamente, mesmo quando há múltiplas requisições simultâneas.

Uma possível solução para esse problema é utilizar mecanismos de controle de concorrência, como transações isoladas ou bloqueios no banco de dados. Dessa forma, você evita que duas requisições paralelas acessem e modifiquem os mesmos dados ao mesmo tempo.

O Spring Framework oferece suporte a transações por meio da anotação @Transactional. Você pode utilizar essa anotação em seu serviço para garantir que as operações no banco de dados sejam executadas de forma isolada. Além disso, é importante verificar se o seu banco de dados suporta transações e configurá-lo corretamente.

Caso você precise de uma solução mais avançada, como o uso de filas, uma biblioteca recomendada é o RabbitMQ. O RabbitMQ é um sistema de mensageria que permite a comunicação assíncrona entre diferentes partes de um sistema distribuído. Ele pode ser utilizado para gerenciar a ordem de execução das requisições e garantir que as validações sejam realizadas corretamente, mesmo em cenários de alta concorrência.

No entanto, antes de adotar uma solução mais complexa como o uso de filas, sugiro que você verifique se as transações isoladas do Spring são suficientes para resolver o problema. Avalie também se o desempenho da sua aplicação não será prejudicado com o uso de filas.

Um abraço e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software