Nas empresas há dezenas de sistemas que precisam trocar informações. Estes sistemas, algumas vezes, foram desenvolvidos de forma independente visando resolver algum problema isolado. Sendo assim ou não, quase todos precisam se integrar aos demais, trocando informações e serviços.
Muitos programadores desenvolvem as trocas de mensagens e as chamadas a comandos em outros sistemas usando mensagens síncronas. Isto geralmente exige algum esforço de programação para ter garantias de que as mensagens chegam ao destino. Talvez a maior parte das aplicações que usam web services para integrar aplicações o façam trocando mensagens síncronas.
Este post serve apenas para lembrar que há vantagens na integração de sistemas usando troca de mensagens assíncronas que usa a abordagem "envie e esqueça": Quem envia as mensagens ou pedidos de execução de comandos não precisa ficar parado esperando a resposta. Esta pode vir posteriormente e ser recebida via callback por alguma thread que a escute. As principais vantagens são:
- As mensagens ou chamadas a comando podem ser retransmitidas e assim a confiabilidade global do sistema aumenta muito.
- Por não precisar ficar bloqueado esperando resposta, melhora o uso dos recursos dos sistemas e assim também a escalabilidade.
Usar mensagens assíncronas não é mais difícil nem mais caro. Apenas exige que se inclua na arquitetura um provedor de serviços de mensageria. Para a nossa sorte há vários provedores gratuitos com bom desempenho com boas facilidades de gerenciamento.
Em termos de programação Java o esforço não aumenta muito por 2 motivos:
- A API JMS é boa, estável e fácil de programar mesmo sem auxílio de Message Driven Beans;
- A parte "suja" da programação para garantir o recebimento das mensagens fica por conta do provedor de mensageria.
Então o que você está esperando para mudar seus paradigmas e diminuir o acoplamento entre seus sistemas? Se é por falta de livros seus problemas acabaram pois aí vão 2 dicas boas:
- Java Messaging do Eric Bruno
- Enterprise Integration Patterns de Gregor Hohpe e Bobby Woolf com várias contribuições de outros.