A capacidade de interagir com sistemas de filas de mensagens é um dos vários recursos existentes no iBOLT, através de seus componentes especializados para esta tarefa.
Nativamente, três são os sistemas suportados:
Microsoft (MSMQ), Java (JMS) e IBM (WebSphereMQ).
Outros sistemas de mensageria podem facilmente ser implementados através do iBOLT SDK.
Neste “post”, vamos focar na integração entre o iBOLT e o JMS.
Como quase tudo em Java, existem várias opções e formas diferentes de se fazer a mesma coisa. Existem vários provedores de JMS. Escolhemos, para este “post”, o ActiveMQ (da Apache Software Foundation).
Vejamos então os passos para implementar esta integração.
IMPORTANTE: Devido as características específicas de cada provedor JMS, os passos abaixo referem-se à integração com ActiveMQ, apenas. Outros provedores poderão requerer configurações diferentes.
Passo 1
É preciso garantir que a versão utilizada do ActiveMQ tenha sido criada para a mesma versão de Java que o iBOLT está utilizando. Por exemplo: o iBOLT 3.2 utiliza o Java 5 (1.5.x). Já a versão 3.2sp3, utiliza o Java 6 (1.6.x). Diferentes versões do ActiveMQ também exigem diferentes versões do Java.
Por exemplo: o ActiveMQ 5.4.3 utiliza o Java 5 e o 5.5.1, o Java 6.
É importante que ambos estejam “sintonizados” na mesma versão de Java.
Passo 2
É preciso garantir que o iBOLT encontre as classes do ActiveMQ, contidas nos arquivos JAR distribuídos com o produto. Existem várias formas de se fazer isso em Java. Abaixo, segue uma (não é a única, mas comprovadamente funciona):
- Edite o arquivo ‘MAGIC.INI’ e relacione estas classes na seção [MAGIC_JAVA], chave: CLASSPATH:
Passo 3
Acrescente as definições ‘java.naming.factory.initial’ e ‘java.naming.provider.url’ na seção [MAGIC_JAVA], chave: JVM_ARGS. O iBOLT utiliza JNDI para se comunicar com o provedor JMS e estas configurações farão ele encontrar o ActiveMQ. O valor destas definições vai variar conforme a instalação do provedor JMS:
Passo 4
O JNDI precisa ser configurado explicitamente. Crie um arquivo jndi.properties (ver regras aqui) na mesma pasta onde copiou (passo 2) os JARs do ActiveMQ. Neste arquivo deve ser informado o connectionFactoryNames, e também os nomes das filas que serão acessadas:
Coloque este arquivo jndi.properties dentro de um arquivo JAR. Isso pode ser feito com o comando: jar –cf <ArquivoJAR> jndi.properties. Veja mais detalhes aqui.
Após, inclua este arquivo JAR na lista informado no ‘MAGIC.INI’, em [MAGIC_JAVA]CLASSPATH:
Com estas configurações, o iBOLT está apto a encontrar e conversar com o ActiveMQ.
Vejamos então os passos para concretizar esta integração em um projeto.
Passo 1
Devemos criar um “resource” do tipo JMS, e informar no “Connection Factory Name” o mesmo valor que especificamos no arquivo jndi.properties:
Passo 2
Utilizamos o componente JMS do iBOLT para fazer o acesso (leitura ou escrita) a um provedor de mensagens Java (neste caso, o ActiveMQ).
Os métodos “Send” são para gravar informações nas filas, e “Get“, para buscar informações da fila:
Quando o iBOLT Server executa o projeto e aciona o componente, os métodos “Get” buscarão dados que existam na fila informada, e os métodos “Send” incluirão dados nesta fila:
Manoel Frederico Silva
Product Manager & MAGIC Evangelist / Magic Software Brasil