2
respostas

JMS para resolver problema de concorrencia

Tenho um sistema web que ,ao receber uma requisição especifica , é necessário realizar centenas de chamadas a um webservice. Consequentemente o sistema trava.

Gostaria de saber se é possível/viável utilizar JMS para controlar o envio de chamadas em um fila e realizar a próxima chamada apenas quando a primeira terminar.

PS: Tentamos threads, mas não deu certo também. Sempre estourava a memoria heap (apesar de aumentarmos bastante) ou a pool de conexões.

2 respostas

Boa noite, Victor! Como vai?

Gostaria de saber se é possível/viável utilizar JMS para controlar o envio de chamadas em um fila e realizar a próxima chamada apenas quando a primeira terminar.

Possível é, mas acho que antes de qualquer coisa vc poderia pensar se realmente isso é necessário! Eu não sei qual é o contexto específico da sua aplicação e o motivo que levou vcs a escolherem a opção de mandar centenas de requisições para um webservice. Mas, se a necessidade de se fazer essas centenas de requisições seja para verificar o estado de determinada execução por parte do webservice, então talvez seja interessante pensar numa solução onde o webservice notifica o cliente sobre o término dessa execução! Essa prática é o que chamamos de push notification!

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

No caso não seria para verificar um estado. Precisamos fazer centenas de validações através de um serviço de outro sistema. Isso acaba travando o sistema.

Dessa modo pensamos em implementar uma fila sincrona pelo JMS para fazer 1 chamado de cada vez e , dessa forma, não travar os outros recursos /threads do projeto.

O Push notification acho que não seria util nesse caso. Gostaria de saber se é desencorajado usar JMS de forma sincrona e se ela seria uma abordagem valida.