O conjunto de arquivos de amostra anexados a este tópico
apresenta uma breve introdução sobre a conexão de um
a um intermediário
do .
Eles permitem:
- Criar dois gerenciadores de fila do : 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
dentro do
e com o próprio
(independente). Você precisará incluir:
- \classes\mqimqe.jar;
- \classes\MQeDevice.jar;
- \classes\MQeExamples.jar;
- \classes\MQeGateway.jar;
- \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 no cliente . 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
\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 é criado com um
nome ClientQM1, que é um registro localizado em
x:\ClientQM1\Registry.
- Crie o gerenciador de filas do servidor dentro do .
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
\examples\MQe .Defina o diretório para
as filas como x:\ServerQM1.Clique
em OK.
Um gerenciador de filas do
servidor é 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
\classes\mqimqe.jar no
CLASSPATH.
- Configure os fluxos de mensagens. Você pode incluir nós do
em fluxos de mensagens existentes ou criar novos fluxos.Alterne para o .
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 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
.
- Configure o gerenciador de filas do .
Compile e execute
os programas SetupMQeExample1 e
SetupMQeExample2 para configurar os gerenciadores de filas
do .
- 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 (ServerQM1 neste
exemplo).
- O caminho para o arquivo de configuração do cliente do
(ClientQM1.ini neste exemplo).
- O endereço IP do servidor (1.23.45.678 neste
exemplo).
- A porta na qual o servidor 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
que hospeda o intermediário (por
exemplo,
).
Por exemplo, em um tipo de prompt de comandos:java SetupMQeExample1
ServerQM1 ClientQM1.ini
1.23.45.678
8081
- 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 (ServerQM1
neste exemplo).
- O caminho para o arquivo de configuração do cliente do
(ClientQM1.ini.
- O nome do gerenciador de filas do
que hospeda o intermediário do (por
exemplo
).
- O nome da fila ponte do
que recebe a entrada (a fila nomeada na propriedade do nó MQInput
Nome da Fila; por
exemplo MQeInputQ1).
- O nome da fila do 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 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
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
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:
/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: /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
, você encontrar a seguinte
exceção do
:
java.net.ConnectException: Conexão recusada
você precisa verificar o seguinte:
- O intermediário é iniciado
(
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
. (A implementação
aparentemente será bem-sucedida mesmo que você não tenha definido
esse parâmetro.)