Trabalhando com Cenários de Exemplo do WebSphere MQ Everyplace

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:

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.

  1. 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.

  2. 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.
    1. Copie os seguintes arquivos .ini:
    2. Copie os seguintes arquivos de origem Java para alguns diretórios:
    3. Compile os arquivos de origem Java.
  3. 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.

  4. 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.
  5. 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.
  6. 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.
  7. 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.

    1. Nome do gerenciador de filas do WebSphere MQ Everyplace (ServerQM1 neste exemplo).
    2. O caminho para o arquivo de configuração do cliente do WebSphere MQ Everyplace (ClientQM1.ini neste exemplo).
    3. O endereço IP do servidor WebSphere MQ Everyplace (1.23.45.678 neste exemplo).
    4. 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.
    5. 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
  8. 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:
    1. O nome do gerenciador de filas do WebSphere MQ Everyplace (ServerQM1 neste exemplo).
    2. O caminho para o arquivo de configuração do cliente do WebSphere MQ Everyplace (ClientQM1.ini.
    3. O nome do gerenciador de filas do WebSphere MQ que hospeda o intermediário do WebSphere Business Integration Event Broker (por exemplo WBRK_QM).
    4. 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).
    5. 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:
    1. O intermediário é iniciado (mqsistart brokername).
    2. O número da porta especificado quando você executou SetupMQeExample1 corresponde ao número da porta especificado na guia Listener do nó MQeInput.
    3. Há um listener em execução nesse número de porta (digite netstat em um prompt de comandos para verificar).
    4. 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.)

Conceitos relacionados
WebSphere MQ Mobile Transport

Tarefas relacionadas
Protegendo Recursos do WebSphere MQ Everyplace
Criação de um Fluxo de Mensagens
Implementando Aplicativos de Fluxo de Mensagens
Verificando os Resultados da Implementação

Referências relacionadas
Nó MQeInput
Nó MQeOutput