O artigo descreve o desenvolvimento de uma aplicação JMS utilizando o framework Spring e o servidor open-source Apache ActiveMQ.
Para que serve:
Este artigo descreve a facilidade de uso da JMS através do framework Spring, que abstrai e simplifica o uso dos elementos desta API. Descreve também o desenvolvimento distribuído, através dos elementos da JMS, para modelar uma arquitetura distribuída de uma aplicação, identificando e separando os processos considerados “pesados” da aplicação. Demonstra ainda, a facilidade para deploy de aplicações no servidor open-source Apache ActiveMQ.
Em que situação o tema é útil:
Este artigo ajuda os desenvolvedores que necessitam integrar aplicações heterogêneas (diferentes tecnologias) por meio da troca de mensagens. Além disso, ajuda os desenvolvedores a modelar processamentos grandes em uma arquitetura distribuída, separando-a do resto da aplicação, deixando-a mais escalável e sem perder tempo nas repostas das requisições feitas por seus usuários.
JMS na prática com Spring e ActiveMQ:
O uso do framework Spring para desenvolver aplicações JMS facilita a criação de aplicações aderentes ao modelo JMS a realizarem a troca de mensagens de forma coesa e simples. A JMS define um conjunto de interfaces que auxiliam o desenvolvedor na criação destas aplicações, direcionando a responsabilidade do desenvolvedor ao desenvolvimento dos processos de negócio da aplicação, sem precisar se preocupar com a integração com a infraestrutura do serviço de mensageria. Utilizando o framework Spring, o desenvolvedor terá facilidades para construir suas classes de negócio e serviço, sem precisar se preocupar com a integração com a API JMS e com a comunicação com o servidor JMS.
Para a realização de testes e execução de aplicações JMS o servidor open-source Apache ActiveMQ facilita a integração com outras aplicações, pois ele é uma implementação (sendo um Provider) de sucesso da arquitetura message-oriented middleware. O exemplo descrito neste artigo demonstra o uso do framework Spring e a integração com o servidor open-source Apache ActiveMQ.
Com o passar dos anos, as aplicações corporativas cresceram de forma significativa em termos de complexidade e sofisticação. Aplicações mais confiáveis, seguras, escaláveis e flexíveis são necessárias para suportar esta demanda crescente, evoluindo assim, para arquiteturas mais complexas e sofisticadas.
O uso de mensagens para integrar aplicações heterogêneas e suportar arquiteturas complexas cresceu pelo simples fato de: utilizar o serviço de mensageria desacopla módulos de negócio da aplicação, evitando “gargalos” e aumentando a flexibilidade e agilidade no processamento das informações, tornando-a escalável.
A troca de mensagens entre duas ou mais aplicações é realizada através da arquitetura Message-Oriented Middleware (MOM). Esta camada permite interoperabilidade, portabilidade e flexibilidade na integração entre aplicações, reduzindo a complexidade no uso de diversos protocolos e sistemas operacionais para que possam se comunicar de forma distribuída (veja a Figura 1).
Figura 1. Integração via troca de mensagens utilizando a arquitetura Message-Oriented Middleware.
Com a plataforma Java EE, o uso da API Java Message Service (JMS), desde sua introdução na plataforma J2EE em 1999, permite uma implementação simples para troca de mensagens utilizando dois modelos: point-to-point e publish and subscribe. A troca de mensagens utilizando estes modelos pode ser realizada de forma síncrona e/ou assíncrona, suportando uma solução completa e flexível na integração de aplicações Java ou Não-Java.
Java Message Service (JMS)
A JMS, versão 1.1, foi liberada em abril de 2002 e incorporada como parte da J2EE 1.4 em novembro de 2003. Servidores de aplicações aderentes à versão J2EE 1.3 são baseados na versão 1.0.2 da JMS.
A versão JMS 1.0.2 definiu dois tipos de domínios de
mensagens: point-to-point (Queues) e publish/subscribe (Topics).
A primeira versão da JMS refere-se a implementações específicas, em nível de
API, para cada modelo. Ou seja, se sua aplicação utiliza a versão JMS 1.0.2, o
conjunto de classes que implementa o domínio point-to-point ...