O conjunto de arquivos de amostra anexados a este tópico
apresenta uma breve introdução sobre a conexão de um
WebSphere MQ Everyplace a um intermediário
do WebSphere Business
Integration Event Broker.
Eles permitem:
- Criar dois gerenciadores de fila do WebSphere MQ Everyplace: um servidor denominado
ServerQM1 e um cliente
ClientQM1.
- Criar conexões entre eles e criar as filas necessárias para
rotear mensagens.
- Transmitir mensagens de amostra ponto a ponto ou de
publicação/assinatura pelo intermediário de mensagens.
Você pode modificar qualquer uma das amostras fornecidas.
Você deve compilar subseqüentemente o código fonte Java.
As etapas a seguir explicam como executar o exemplo. As estruturas
de diretórios descritas supõem que você esteja utilizando o Windows.
Em outras plataformas, você deve alterar esses caminhos
adequadamente.
- Configure o CLASSPATH para
cada sistema no qual você executará programas que se comunicam com
WebSphere MQ Everyplace dentro do
WebSphere Business
Integration Event Broker e com o próprio
WebSphere MQ Everyplace (independente). Você precisará incluir:
- install_dir\classes\mqimqe.jar;
- install_dir\classes\MQeDevice.jar;
- install_dir\classes\MQeExamples.jar;
- install_dir\classes\MQeGateway.jar;
- install_dir\classes\MQeMQBridge.jar;
Em algumas versões do Windows, existe um limite de 255 caracteres
em uma definição CLASSPATH. Para evitar o
encontro dessa restrição, você pode atribuí-los a uma nova variável
de ambiente, por exemplo, MQEPATH e
incluir %MQEPATH%; no seu
CLASSPATH.
- Copie os arquivos de exemplo. Clique com o botão direito
em cada link abaixo e clique em Selecionar Destino
Como.... Escolha o diretório no qual você deseja
armazenar os arquivos.
- Copie os seguintes arquivos
.ini:
- Copie os seguintes arquivos de origem Java para alguns
diretórios:
- Compile os arquivos de origem Java.
- Crie os gerenciadores de filas do WebSphere MQ Everyplace no cliente WebSphere MQ Everyplace. O nome do arquivo faz distinção entre maiúsculas e minúsculas;
especifique-o exatamente conforme o mostrado.
A partir de um
prompt de comandos, digite:
java
examples.install.CreateQueueManager
No quadro Arquivo de Configuração, procure e selecione o arquivo
ClientQM1.ini, fornecido no diretório
install_dir\examples\MQe.
Defina o diretório para as filas como
x:\ClientQM1 (em que
x é a letra da unidade de sua escolha).
Clique
em OK.
Um gerenciador de filas do
cliente WebSphere MQ Everyplace é criado com um
nome ClientQM1, que é um registro localizado em
x:\ClientQM1\Registry.
- Crie o gerenciador de filas do servidor WebSphere MQ Everyplace dentro do WebSphere Business
Integration Event Broker.
O nome do arquivo faz distinção entre maiúsculas e minúsculas;
especifique-o exatamente conforme o mostrado.
A partir de um
prompt de comandos, digite:
java
examples.install.CreateQueueManager
No quadro Arquivo de Configuração, procure e selecione o
arquivo ServerQM.ini, fornecido no diretório
install_dir\examples\MQe .Defina o diretório para
as filas como x:\ServerQM1.Clique
em OK.
Um gerenciador de filas do
servidor WebSphere MQ Everyplace é criado com um
nome ServerQM1, com um registro localizado em
x:\ServerQM1\Registry.
Se você procurar o arquivo de amostra ServerQM1.ini,
poderá observar que o listener foi definido para atender na porta
8081.Essa definição será ignorada na criação do gerenciador de
filas. Mais tarde na configuração, se você escolher por fazer com que
o nó MQeInput tire suas definições de um arquivo de configuração, esse
número de porta será utilizado.
Se
você obter um erro na criação do gerenciador de filas do servidor com
texto:
com.ibm.broker.mqimqe.examples.rule.AttributeRule
verifique se fez referência corretamente ao
install_dir\classes\mqimqe.jar no
CLASSPATH.
- Configure os fluxos de mensagens. Você pode incluir nós do
WebSphere MQ Everyplace em fluxos de mensagens existentes ou criar novos fluxos.Alterne para o Perspectiva do Desenvolvimento de Aplicativos do Intermediário.
Inclua os nós no fluxo de mensagens. Para o sistema de mensagens ponto a
ponto (não publicação/assinatura), você deve incluir um nó MQeInput e
um nó MQeOutput. Para o sistema de mensagens de
publicação/assinatura, você deve incluir um nó MQeInput e um nó
Publication.
- Configurando o Nó MQeInput
- Para este exemplo, você deve definir apenas o
Nome de Fila (na
guia Geral). Cada nó MQeInput deve ter um nome da fila
diferente. Na etapa 8 a seguir, o exemplo
utiliza o nome da fila, MQeInputQ1.
Talvez você queira fazer outras alterações na configuração (por
exemplo, definir o nível de rastreio) mas isso não é necessário para
conseguir executar esses scripts.
- Configurando o Nó MQeOutput
- Verifique se o Modo de
Destino (na guia Avançada) é a
Lista de
Destino. Deixe todos os outros campos em branco.
- Configurando o Nó Publication
- Nenhuma ação necessária.
- Implemente o fluxo de mensagens.
Salve o
fluxo de mensagens e verifique se não possui erros. Inclua o fluxo de
mensagens no arquivo bar e implemente-o no intermediário.
Verifique se a implementação foi bem-sucedida no Log de Eventos. Você pode esperar que verá
mensagens BIP4040I e BIP2056I.
- O gerenciador de filas do cliente é iniciado quando o cliente se
inicia.
- O gerenciador de filas do servidor é iniciado somente quando um
nó MQeInput está sendo executado e é implementado em um fluxo em que
um intermediário do WebSphere Business
Integration Event Broker esteja sendo executado.
- A implementação de um fluxo de mensagens ponto a ponto (MQeInput
para MQeOutput) também inicia o gerenciador de filas do servidor
WebSphere MQ Everyplace.
- Configure o gerenciador de filas do WebSphere MQ Everyplace.
Compile e execute
os programas SetupMQeExample1 e
SetupMQeExample2 para configurar os gerenciadores de filas
do WebSphere MQ Everyplace.
- SetupMQeExample1 cria uma rota para que o gerenciador
de filas do cliente possa entrar em contato com o gerenciador de
filas do servidor.
- SetupMQeExample2 cria uma fila
no gerenciador de filas do servidor denominada Inbox que pode ser utilizada nos exemplos para mensagens
de retorno.
Esses programas aceitam os parâmetros seguintes.
SetupMQeExample1 requer todos os cinco parâmetros, na
seqüência mostrada.SetupMQeExample2 requer somente os
dois primeiros.
- Nome do gerenciador de filas do WebSphere MQ Everyplace (ServerQM1 neste
exemplo).
- O caminho para o arquivo de configuração do cliente do WebSphere MQ Everyplace
(ClientQM1.ini neste exemplo).
- O endereço IP do servidor WebSphere MQ Everyplace (1.23.45.678 neste
exemplo).
- A porta na qual o servidor WebSphere MQ Everyplace está atendendo.
O número da porta deve corresponder à
Porta especificada na guia
Listener do diálogo de propriedades de nó
MQeInput.
Por padrão, o número da porta nas propriedades de nó MQeInput é
8081.
- O nome do gerenciador de filas do
WebSphere MQ que hospeda o intermediário WebSphere Business
Integration Event Broker (por
exemplo,
WBRK_QM).
Por exemplo, em um tipo de prompt de comandos:java SetupMQeExample1
ServerQM1 ClientQM1.ini
1.23.45.678
8081
WBRK_QM
- Envie mensagens pelos fluxos de mensagens.
- Para mensagens ponto-a-ponto, utilize o programa
SendMessages.
Esse procedimento envia uma mensagem utilizando as classes
MQeMsgObj e
MQeMbMsgObj.
- Para as mensagens de publicação/assinatura, utilize o programa
SendPubSubMessages.
Esse procedimento assina, publica, lê a mensagem e cancela a
assinatura.
Ambos os programas aceitam os cinco parâmetros a seguir, sendo
que todos devem estar presentes: - O nome do gerenciador de filas do WebSphere MQ Everyplace (ServerQM1
neste exemplo).
- O caminho para o arquivo de configuração do cliente do WebSphere MQ Everyplace
(ClientQM1.ini.
- O nome do gerenciador de filas do
WebSphere MQ que hospeda o intermediário do WebSphere Business
Integration Event Broker (por
exemplo
WBRK_QM).
- O nome da fila ponte do WebSphere MQ
que recebe a entrada (a fila nomeada na propriedade do nó MQInput
Nome da Fila; por
exemplo MQeInputQ1).
- O nome da fila do WebSphere MQ Everyplace em que você deseja receber mensagens de
volta do intermediário.O código de amostra cria uma fila chamada
Inbox, mas se você já possui
uma fila do WebSphere MQ Everyplace definida,
poderá especificar essa fila.
Se essa fila não existir, você receberá a
exceção:
A mensagem recuperada não continha todos os campos
esperados.
Se você obter essa exceção, mas a fila
foi criada, o limite de tentativas de
recuperação foi alcançado e nenhuma mensagem pode ser recuperada.
Por exemplo, para enviar mensagens
ponto-a-ponto, digite o seguinte em um prompt de comandos: java SendMessages
ServerQM1
ClientQM1.ini
WBRK_QM
MQeInputQ1
Inbox
Se você enviar uma mensagem ao intermediário
construído utilizando um objeto
MQeMsgObject (quando todos os campos
forem transmitidos ao intermediário), a saída será
semelhante a:
Lendo mensagem da fila
Mensagem: Esta é a carga útil
Tag da própria mensagem: Minha própria tag com alguns dados
Se você enviar uma mensagem ao intermediário
construído utilizando um objeto
MQeMbMsgObject (quando apenas os campos
compatíveis dentro do intermediário forem enviados) a saída
será semelhante a:
Lendo mensagem da fila
Mensagem: Esta é a carga útil
Por exemplo, para enviar mensagens de
publicação/assinatura, digite o seguinte em um prompt de
comandos:
java
SendPubSubMessages
ServerQM1
ClientQM1.ini
WBRK_QM
MQeInputQ1
Inbox
Se as mensagens forem enviadas e recebidas com êxito,
você verá saída semelhante à:
Iniciado o gerenciador da fila: ClientQM1
Assinando os tópicos:
clima
umidade
temperatura
Colocar a mensagem no QM/fila:
WBRK_QM/MQeInputQ2
Publicando mensagem no tópico 'clima'
Lendo mensagem da fila
Tópico: clima
Mensagem: ensolarado
cancelando assinatura dos tópicos:
clima
umidade
temperatura
Colocar mensagem no GF/fila: WBRK_QM/MQeInputQ2
(em que MQeInputQ2 é o nome do nó MQeInput utilizado).
Se, após tentativas da amostra de colocar uma mensagem no gerenciador
de filas do intermediário e na fila ponte do
WebSphere MQ, você encontrar a seguinte
exceção do
WebSphere MQ Everyplace:
java.net.ConnectException: Conexão recusada
você precisa verificar o seguinte:
- O intermediário é iniciado
(mqsistart
brokername).
- O número da porta especificado quando você executou
SetupMQeExample1 corresponde ao número da
porta especificado na guia Listener do nó
MQeInput.
- Há um listener em execução nesse número de porta (digite
netstat em um prompt de comandos para verificar).
- Você especificou um nome de fila ponte do
WebSphere MQ Everyplace. (A implementação
aparentemente será bem-sucedida mesmo que você não tenha definido
esse parâmetro.)