Roteando solicitações de conexão do cliente para servidores do gerenciador de fila do IBM MQ usando saídas de segurança

Nesse cenário, é possível rotear dinamicamente solicitações de conexão do cliente, de forma round-robin, para um grupo de três servidores do gerenciador de filas do IBM® MQ . O gerenciador de filas em cada servidor no grupo deve ser idêntico.

Antes de Começar

  • Antes de começar a usar esse cenário, verifique se você concluiu as tarefas de pré-requisito listadas em Introdução ao IBM MQ Internet Pass-Thru.
  • Instale o JDK Java 8.0 .
  • Inclua o subdiretório Java bin na variável de ambiente PATH .

Sobre esta tarefa

A saída de amostra usada neste cenário é SampleRoutingExit.java. Ela é fornecida com MQIPT no subdiretório samples/exits do diretório de instalação MQIPT.

O nome e o local do arquivo de classe de saída compilado são definidos com as propriedades MQIPT SecurityExitName e SecurityExitPath

A lista de gerenciadores de filas e de nomes de servidores a serem usados é lida a partir de um arquivo de configuração, chamado SampleRoutingExit.conf. O exit espera que o arquivo de configuração exista no subdiretório ' exits do diretório inicial ' MQIPT.

Na primeira vez em que o comando amqsputc é executado, a mensagem IBM MQ é colocada no MQIPT MQIPT.LOCAL.QUEUE no primeiro servidor. A segunda vez que ela for executada, a mensagem será colocada na fila no segundo servidor, e assim por diante. Usando essa configuração, não é possível que o comando amqsgetc recupere a mensagem apenas colocada na fila, porque a solicitação de conexão do cliente usada pelo comando amqsgetc é passada para a próxima fila na lista. No entanto, executar o comando amqsputc três vezes, seguido por três comandos amqsgetc, assegura que cada mensagem seja recuperada na mesma ordem.

Claro, usando outro cliente IBM MQ , conectando-se diretamente a um gerenciador de filas (ou seja, não usando o MQIPT nesta amostra), é possível recuperar seletivamente mensagens de qualquer um dos gerenciadores de filas.

Figura 1. Roteando o Diagrama de Rede de Saída
Consulte o texto.

Este diagrama mostra o fluxo de conexão do cliente IBM MQ (chamado client1.company1.com na porta 1415) através de MQIPT para três IBM MQ servidores (chamados server1.company2.com, server2.company2.come server3.company2.com).

Procedimento

Para rotear solicitações de conexão do cliente sequencialmente para três diferentes servidores do gerenciador de filas do IBM MQ usando saídas de segurança, conclua as seguintes etapas:

  1. Crie três gerenciadores de filas idênticos chamados MQIPT.QM1 em três servidores separados.
    Cada gerenciador de filas tem um canal SVRCONN chamado MQIPT.CONN.CHANNEL e uma fila local vazia chamada MQIPT.LOCAL.QUEUE.
  2. No servidor MQIPT :
    1. Crie um diretório chamado exits no diretório inicial MQIPT emitindo o seguinte comando em um prompt de comandos:
      md C:\mqiptHome\exits
    2. No diretório C:\mqiptHome\exits (onde C:\mqiptHome é o diretório onde o arquivo mqipt.conf está localizado), crie um arquivo de configuração de amostra, chamado SampleRoutingExit.conf que contém os nomes de seus três gerenciadores de filas.

      Por exemplo, o arquivo de configuração poderia conter as entradas a seguir:

      server1.company2.com:1414
      server2.company2.com:1415
      server3.company2.com:1416
      Assegure-se de que não haja linhas em branco antes da primeira entrada no arquivo e que cada entrada seja um nome de servidor válido. Se você tiver usado nomes de servidores diferentes, mude esses nomes para que correspondam ao seu ambiente.
    3. Abra um prompt de comandos e insira os comandos a seguir para compilar a saída. Você não precisa fazer isso se não tiver alterado o código de saída, pois a saída de amostra compilada é fornecida com MQIPT.
      C:
      cd \mqipt\samples\exits
      javac -classpath C:\mqipt\lib\com.ibm.mq.ipt.jar;. SampleRoutingExit.java
    4. Digite o seguinte comando para copiar o arquivo de classe de saída compilado SampleRoutingExit.class para o diretório C:\mqiptHome\exits :
      copy C:\mqipt\samples\exits\SampleRoutingExit.class C:\mqiptHome\exits
    5. Editar mqipt.conf e adicionar uma definição de rota:
      [route]
      ListenerPort=1415
      Destination=server1.company2.com
      DestinationPort=1414
      SecurityExit=true
      SecurityExitPath=C:\mqiptHome\exits
      SecurityExitName=SampleRoutingExit
      Observe que você não tem que configurar SecurityExitPath se colocar SampleRoutingExit.conf no diretório padrão C:\mqiptHome\exits.
    6. Iniciar MQIPT.
      Abra um prompt de comandos e digite o seguinte comando:
      C:\mqipt\bin\mqipt C:\mqiptHome -n ipt1
      em que C:\mqiptHome indica o local do arquivo de configuração MQIPT, mqipt.conf, e ipt1 é o nome a ser fornecido para a instância de MQIPT.
      As mensagens a seguir indicam que MQIPT foi iniciado com êxito:
      5724-H72 (C) Copyright IBM Corp. 2000, 2026. All Rights Reserved
      MQCPI001 IBM MQ Internet Pass-Thru V9.4.0.0 starting
      MQCPI004 Reading configuration information from mqipt.conf
      MQCPI152 MQIPT name is ipt1
      MQCPI021 Password checking has been enabled on the command port
      MQCPI011 The path C:\mqiptHome\logs will be used to store the log files
      MQCPI006 Route 1415 has started and will forward messages to :
      MQCPI034 ....server1.company2.com(1414)
      MQCPI035 ....using MQ protocol
      MQCPI079 ....using security exit C:\mqiptHome\exits\SampleRoutingExit
      MQCPI080 ......and timeout of 30 seconds
      MQCPI078 Route 1415 ready for connection requests
  3. Em um prompt de comandos no sistema do cliente IBM MQ , insira os comandos a seguir:
    1. Configure a variável de ambiente MQSERVER :
      SET MQSERVER=MQIPT.CONN.CHANNEL/TCP/10.9.1.2(1415)
    2. Coloque três mensagens:
      amqsputc MQIPT.LOCAL.QUEUE MQIPT.QM1
      Hello world 1
      amqsputc MQIPT.LOCAL.QUEUE MQIPT.QM1
      Hello world 2
      amqsputc MQIPT.LOCAL.QUEUE MQIPT.QM1
      Hello world 3
      Pressione Enter duas vezes depois de digitar cada sequência de mensagem.
    3. Obtenha as mensagens:
      amqsgetc MQIPT.LOCAL.QUEUE MQIPT.QM1
      amqsgetc MQIPT.LOCAL.QUEUE MQIPT.QM1
      amqsgetc MQIPT.LOCAL.QUEUE MQIPT.QM1
      As mensagens,Hello world 1,Hello world 2eHello world 3são retornados.