Otimizando Chamadas Rest

Postado em Atualizado em

Hoje eu gostaria de compartilhar uma estratégia de chamadas Rest que tenho aplicado com muito sucesso nos últimos projetos. Imagine que você tenha um projeto que necessite consumir diferentes web services rest, na operação do usuário final. Quero dizer que, por exemplo: no click de 1 botão na interface visual, esse projeto precise consumir 3 operações de web services rest para fazer concluir a operação. Supondo que, cada web services demora ai 10 segundos, resultaria na tempo total de 30 segundos para essa operação. Vejamos o exemplo abaixo que simula o caso:

Emulamos uma suposta interface que defini o contrato do web service rest:

Emulamos 3 chamadas remotas que demorem 10 segundos de tempo cada uma:

Finalmente, temos a chamada dos 3 web services:

Conclusão:

Como estamos usando a estratégia de chamada sequencial, logo, a operação levará exatamente 30 segundos para ser completamente efetuada.

Existe alguma forma de melhorar esse tempo de resposta? É claro que sim, usando a estratégia de chamada paralelas.

Segue abaixo como ficaria o mesmo exemplo, usando a estratégia paralela. Mantemos a emulação da interface que defini o contrato do web service rest:

Mantemos as 3 chamadas remotas que demorem 10 segundos de tempo cada uma:

Agora iremos usar o framework java.util.concurrent do JSE para fazer chamadas em paralelo.

1)Precisaremos empacotar as chamadas rest em um Callable:

2)Precisaremos criar um pool de thread para executar as operações ao mesmo tempo:

3)E finalmente, precisaremos fazer a chamadas remotas usando um Future para disparar as chamadas em paralelo:

Conclusão Final:

Como temos as 3 operações sendo executadas em paralelo, obviamente teremos um tempo de 10 segundos para ser completamente efetuada. Ou seja, vale muito a pena!

Github

Se te interessar, baixe esse projeto no meu git. Até a próxima 😉 !

“As pessoas fazem muitos planos, mas quem decide é Deus, o SENHOR.” Provérbios 19:21

Anúncios