O termo Middleware se tornou comum no jargão corporativo e na mídia técnica. Chamamos de middleware um sistema de computação que facilita a troca de informações entre duas ou mais aplicações, estejam elas ou não em ambientes, redes ou hardwares diferentes.
Um servidor de aplicação é um tipo de middleware que permite, de forma centralizada, a instalação e execução de aplicações. Essas aplicações servem a propósitos de negócio e normalmente para isso interagem com outros middlewares. O mercado de software está repleto de fornecedores de sistemas de middleware e isso faz com que haja uma busca constante das empresas e da academia em encontrar padrões, definir protocolos e estimular formas fáceis de integração.
Nesse contexto se encontra a plataforma Java EE 6, uma especificação que descreve e define uma série de APIs para criação de aplicações Java a serem instaladas e executadas em servidores de aplicação. Descreve também como um servidor se conecta a outros servidores e como essa conexão deve funcionar. Um grande exemplo de servidor totalmente compatível com a plataforma Java EE 6 é o JBoss EAP 6.
Ao contrário de outras plataformas, o Java é conhecido pela sua diversidade. Uma das organizações sem fins lucrativos que mais colabora e incentiva a criação de software open source Java é a fundação Apache, mantenedora de vários projetos que suportam o Java EE 6.
Um desses projetos é o Apache Qpid, que abrange uma série de componentes incluindo APIs de criação e envio de mensagens, middleware de mensageria e conectores JCA. Neste artigo utilizaremos o conector Qpid JCA para fazer o JBoss EAP enviar e receber mensagens de outros middlewares de mensageria e através do uso do protocolo AMQP permitiremos que o JBoss EAP interaja de maneira confiável e ágil com plataformas totalmente diferentes da plataforma Java.
O AMQP, sigla para Advanced Messaging Queueing Protocol, é um protocolo de troca de mensagens largamente utilizado pelos grandes nomes da indústria de software e mantido por uma organização mundial de padronização chamada OASIS. Por ser amplamente suportado por vários fornecedores, o AMQP é principalmente útil para comunicação entre sistemas heterogêneos escritos em linguagens de programação diferentes.
Esse protocolo também é utilizado por diversos servidores de mensageria e uma de suas mais famosas implementações, o broker RabbitMQ, será empregado em nossa solução como mediador de mensageria entre o JBoss EAP e uma simples aplicação externa.
Message Broker, JMS ou Mensageria?
Os termos Message Broker, JMS e Mensageria são muitas vezes usados de forma intercalada e podem causar confusão mesmo a profissionais mais experientes. Apesar de relacionadas, essas palavras têm significados diferentes.
Mensageria, por exemplo, é um termo mais abrangente, que significa uma forma de comunicação entre componentes e aplicações. Cada programa ou sistema que usa mensageria pode assumir o papel de “produtor”, ou seja, ser um gerador de mensagem, ou “consumidor”, que representa os receptores de uma mensagem.
Para estabelecer essa comunicação, os Consumidores e Produtores podem trocar mensagens diretamente entre si ou através de um sistema intermediário. O sistema responsável por assumir o papel de intermediário em mensageria é chamado de Message Broker, e possui uma série de características que veremos a seguir.
Message Broker
Um componente Message Broker é responsável por coordenar a troca de mensagens, repassar requisições, retransmitir resultados e erros, e principalmente fazer com que produtores de informação não tenham nenhum conhecimento dos consumidores da informação produzida por eles. Essas características trazem algumas vantagens, a saber:
· Os produtores e consumidores funcionam de forma independente. Em caso de falha, no entanto, é óbvio que o processo de negócio que depende de um desses participantes será afetado;
· A quantidade de instâncias de produtores pode ser diferente da quantidade de instâncias de consumidores, de forma a acompanhar a demanda por mais poder de processamento;
· O Message Broker é ideal para trocas de mensagens em ambientes heterogêneos, isto é, aplicações escritas nas mais diversas linguagens e que rodam nas mais diversas plataformas.
Uma arquitetura baseada no uso de Message Broker pode também apresentar algumas desvantagens, a saber:
· Quando mensageria é utilizada, cada mensagem produzida deve ser transformada de acordo com o protocolo de comunicação utilizado antes de ser enviada ao Message Broker. Por sua vez, o consumidor deve fazer o caminho inverso, convertendo a mensagem antes de poder processá-la. Isso pode ser extremamente custoso se o protocolo de comunicação, o formato da mensagem e ...