Recursos especiais neste artigo:
Contém nota Quickupdate.
Este artigo apresentará as principais características, conceitos e configurações por trás do servidor JBoss HornetQ. Por meio do uso de alguns cenários práticos, já validados por grandes empresas, será exposta ao leitor uma visão clara da aplicabilidade do HornetQ.
Em que situação o tema é
útil
Desenvolvedores e arquitetos que desejam integrar aplicações com o uso
de serviços de mensageria podem encontrar no HornetQ uma ferramenta simples e
bastante poderosa. A partir do seu suporte a vários protocolos de comunicação é
possível integrá-la a aplicações desenvolvidas em diferentes linguagens.
Hoje em dia, é cada vez maior o número de sistemas que dão suporte às operações das empresas, sejam eles desenvolvidos in company ou adquiridos de empresas especialistas em determinados segmentos como a SAP, Oracle PeopleSoft ou Totvs. O fato é que, sem essas ferramentas seria impossível que verticais como bancos, telecons, Utilities e Oil & Gas conseguissem atender de forma rápida e satisfatória um mercado cada vez mais exigente. Mas, a mesma quantidade de softwares que as apoiam, traz consigo grandes desafios para as equipes de TI, como por exemplo, prover a infraestrutura necessária para execução dessas ferramentas, contratação e capacitação de pessoal e, por último, mas não menos importante, garantir que eles conversem entre si.
O último desafio citado no parágrafo anterior é sem sombra de dúvida um ponto bastante crítico dentro de qualquer organização. Fazer com que vários sistemas, na maioria das vezes, desenvolvidos em linguagens e plataformas diferentes, troquem informações, é uma tarefa bastante árdua. Na Ciência da Computação, existe uma área responsável por fazer com que sistemas deixem de serem meras caixas isoladas e passem a trocar informações. Esse campo é conhecido como integração de sistemas. A Wikipédia (em inglês) traz vários significados para Integração de Sistemas, mas uma delas chama mais a atenção, por ser simples e bastante abrangente, que é: “A junção de subsistemas em um único, a fim de assegurar que juntos funcionem como um só sistema.”. Afinal de contas, essa é a visão do usuário que opera o sistema, correto?
Quando falamos em integração de sistemas, temos ao nosso dispor algumas técnicas que nos auxiliam na resolução desse problema. São elas:
· Compartilhamento de Banco de Dados – As aplicações possuem acesso ao banco de dados uma da outra;
· Remote Procedure Call (RPC) – As aplicações expõem seus dados ou operações através de APIs. Encaixam-se nesse perfil os webservices e EJBs;
· Transferência de Arquivo – As aplicações trocam informações utilizando arquivos geralmente em um formato texto;
· Mensageria – Nesse modelo, um software conhecido como middleware (MOM) é responsável por garantir a troca de informações entre as aplicações.
Usando como alicerce a última técnica citada, será apresentado neste artigo o HornetQ, um poderoso servidor de mensageria open source mantido pela JBoss e que atualmente equipa o servidor JBoss AS 7 como serviço de mensagem padrão. Mais a frente o leitor terá a oportunidade de conhecer a fundo os principais conceitos e configurações por trás desse servidor, como por exemplo, o mecanismo de segurança e persistência, roteamento de mensagens, cluster, criação de filas e tópicos, entre outros recursos.
Mensageria
Para que o leitor iniciante possa tirar um melhor proveito desse artigo, é importante que ele conheça alguns conceitos que são empregados pelos sistemas de mensageria. O leitor que já tiver esse conhecimento pode saltar para o próximo tópico sem qualquer prejuízo para o aprendizado. Quando falamos em mensageria, cinco conceitos são muito importantes, a saber:
· Message-Oriented Middleware (MOM): Responsável por fazer a ponte entre os sistemas participantes do processo de integração, tem como principal objetivo receber uma mensagem de um cliente e garantir que ela seja entregue ao sistema de destino. Algumas de suas características são: não podem se conectar a um programa cliente, deve garantir segurança, integridade dos dados e possuir capacidade de recuperação em caso de falha. Aqui esse papel será feito pelo HornetQ;
· Canal: Meio pelo qual o cliente envia uma mensagem a um sistema destinatário;
· Mensagem: Pacote de dados que carrega uma informação a ser entregue a um destinatário. O seu corpo pode carregar informações no formato XML, JSON ou binário;
· Emissor: Sistema responsável pelo envio de uma mensagem;
· Consumidor: Sistema que consome uma mensagem do canal enviada para ele.
Filas
Os canais são componentes especiais configurados no MOM conhecidos como filas e são classificados em dois modelos:
· Point-To-Point: Usado quando é necessário garantir que uma mensagem seja entregue a um único consumidor. No MOM ele é representado como um componente chamado Queue;
· Publish/Subscribe: Usado quando o cliente deseja entregar a mesma mensagem a vários consumidores.
Instalando, inicializando e parando o Servidor
O HornetQ pode ser obtido através do Portal JBoss. O endereço para download pode ser encontrado na seção Links. Durante esse artigo utilizaremos a versão 2.1.14.Final (ver Figura 1), pois quando da escrita do artigo essa era a última versão estável.
O processo de instalação é muito simples, basta efetuar o download do arquivo correspondente à versão citada e descompactá-lo no diretório da sua escolha. Contudo, por se tratar de uma aplicação escrita em Java, você precisará do Java instalado na sua máquina para rodá-lo, mais exatamente a versão 1.6 ou superior.
No decorrer do artigo utilizaremos o Linux para as demonstrações, mas o leitor que não possui conhecimento nesse sistema operacional não precisa se preocupar, pois, caso seja necessário uma configuração específica de outro ambiente, iremos mostrar como fazê-la.
Figura 1. Área de download do HornetQ no Portal JBoss.
Estrutura de diretórios
Antes de realizarmos qualquer procedimento no servidor, vamos entender melhor como está organizado a sua estrutura de diretórios, apresentada na Figura 2. Nela, podemos visualizar as seguintes pastas:
· bin – Contém os scripts necessários ao gerenciamento do servidor como, por exemplo, para inicializa-lo e pará-lo;
· config – Contém os arquivos XML responsáveis pelas configurações das instâncias dos servidor;
· docs – Contém a documentação do servidor;
· example – Contém uma grande variedade de aplicações exemplo que utilizam as APIs JMS e HornetQ Core;
· lib – Contém as bibliotecas (.jar) necessárias para a execução do servidor e outras que podem ser compartilhadas entre as aplicações clientes que precisam acessar o HornetQ;
· licenses – Contém arquivos texto com as informações de licença do HornetQ;
· native-src – Contém o código fonte da biblioteca HornetQLibIO, que pode ser utilizada pelo HornetQ em ambientes Linux para tirar proveito do mecanismo AIO presente em algumas versões do kernel do Linux;
· schemas – Contém os arquivos XSDs utilizados para definição dos arquivos XML de configuração;
· tools – Contém a ferramenta Ant, usada para construir e rodar o HornetQ.
Figura 2. Estrutura de diretórios do Servidor.
Start/Stop
Agora que você já conhece a estrutura de diretórios do HornetQ, chegou a hora de testarmos a sua instalação. Os processos de inicialização e parada estão associados respectivamente aos arquivos destacados a seguir:
· Windows – run.bat / stop.bat;
· Linux – run.sh / stop.sh.
Estes arquivos podem ser encontrados no subdiretório bin dentro do diretório de instalação do HornetQ que, a partir de agora, sempre que necessário, iremos nos referir como HORNETQ_HOME.
Usuários da plataforma Windows poderão rodar o servidor clicando duas vezes sobre o arquivo correspondente à inicialização; neste caso o run.bar. Já os usuários do Linux precisarão de um passo extra para fazê-lo, como dica os comandos:
$ chmod 777 run.sh
$ sh ./run.sh
Assim que o script for executado será possível acompanhar um log similar ao da Figura 3 sendo exibido no console. Para verificar se o servidor foi inicializado corretamente, execute o comando telnet localhost 1099. Caso uma conexão seja estabelecida, indica que o servidor foi inicializado com sucesso.
Figura 3. Parte do log de inicialização do HornetQ.
Para parar o servidor da maneira correta, basta utilizar os scripts stop.sh/stop.bat. Dessa forma você garante que os processos do servidor serão interrompidos sem causar lock em arquivo, efeito comum quando a execução é interrompida utilizando Ctrl + C.
Arquivos de Configuração
Os arquivos de configuração do HornetQ podem ser encontrados no diretório HORNETQ_HOME/config. Observe na Figura 4 como está organizada a estrutura de subdiretórios. As pastas jboss-as-4, jboss-as-5 e stand-alone representam os perfis de execução do HornetQ. Elas possuem as configurações necessárias para executá-lo de forma integrada ao JBoss Application Server nas versões 4, 5 e também em modo standalone, respectivamente. Em cada um desses diretórios é possível encontrar os subdiretórios clustered e non-clustered, onde ficam as configurações relacionadas ao modo de operação do servidor, ou seja, se a instância do servidor suportará ou não o modo cluster.
Será também dentro dos diretórios clustered e non-clustered que iremos encontrar os arquivos de configuração e auxiliares do servidor, a saber:
· hornetq-beans.xml – Neste arquivo são definidos todos os serviços do HornetQ, bem como a dependência entre eles;
· hornet-configuration.xml – Principal arquivo de configuração do servidor. Através dele são configurados objetos como: connectors, acceptors, cluster, segurança, bridge, entre outros;
· hornetq-users.xml – Armazena as informações relacionadas ao mecanismo de segurança do HornetQ, como usuários e perfis;
· hornetq-jms.xml – Usado para configuração de queues, topics e connection factories;
· logging.properties – Como o HornetQ utiliza o Java Logging Framework como mecanismo de log, será nesse arquivo que os ajustes relacionados a esse assunto serão configurados;
· jndi.properties – Responsável pelo mapeamento do serviço JNDI.
...
Confira outros conteúdos:
Introdução ao JDBC
Novidades do Java
Teste unitário com JUnit
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.