Routage des demandes de connexion client vers les serveurs de gestionnaire de files d'attente IBM MQ à l'aide des exits de sécurité

Dans ce scénario, vous pouvez router dynamiquement les demandes de connexion client, de manière circulaire, vers un groupe de trois serveurs de gestionnaire de files d'attente IBM® MQ . Le gestionnaire de files d'attente sur chaque serveur du groupe doit être identique.

Avant de commencer

  • Avant de commencer à utiliser ce scénario, assurez-vous d'avoir effectué les tâches préalables énumérées dans Premiers pas avec IBM MQ Internet Pass-Thru
  • Installez le kit JDK Java 8.0 .
  • Ajoutez le sous-répertoire Java bin à la variable d'environnement PATH .

A propos de cette tâche

L'exit exemple utilisé dans ce scénario est SampleRoutingExit.java. Il est fourni avec MQIPT dans le sous-répertoire samples/exits du répertoire d'installation MQIPT.

Le nom et l'emplacement du fichier de classe d'exit compilé sont définis avec les propriétés MQIPT SecurityExitName et SecurityExitPath .

La liste des noms de serveur et de gestionnaire de files d'attente à utiliser est lue à partir d'un fichier de configuration appelé SampleRoutingExit.conf. L'exit s'attend à ce que le fichier de configuration se trouve dans le sous-répertoire 'exits du répertoire 'MQIPT.

Lors de la première exécution de la commande amqsputc , le message IBM MQ est placé sur le MQIPT MQIPT.LOCAL.QUEUE sur le premier serveur. Lors de sa seconde exécution, le message est placé dans la file d'attente du deuxième serveur, et ainsi de suite. Dans cette configuration, la commande amqsgetc ne peut pas extraire le message qui vient d'être placé dans la file d'attente, car la demande de connexion client utilisée par amqsgetc est transmise à la file d'attente suivante dans la liste. Toutefois, l'exécution à trois reprises de la commande amqsputc, suivie de trois commandes amqsgetc, permet d'extraire chaque message dans le même ordre.

Bien entendu, en utilisant un autre client IBM MQ , en vous connectant directement à un gestionnaire de files d'attente (c'est-à-dire en n'utilisant pas MQIPT dans cet exemple), vous pouvez extraire de manière sélective des messages de n'importe lequel des gestionnaires de files d'attente.

Figure 1 : Diagramme réseau de l'exit de sécurité de routage
Voir le texte.

Ce diagramme illustre le flux de connexion entre le client IBM MQ (appelé client1.company1.com sur le port 1415) et MQIPT et trois serveurs IBM MQ (appelés server1.company2.com, server2.company2.comet server3.company2.com).

Procédure

Pour acheminer les demandes de connexion client de manière séquentielle vers trois serveurs de gestionnaire de files d'attente IBM MQ différents à l'aide d'exits de sécurité, procédez comme suit:

  1. Créez trois gestionnaires de files d'attente identiques nommés MQIPT.QM1 sur trois serveurs distincts.
    Chaque gestionnaire de files d'attente comporte un canal SVRCONN appelé MQIPT.CONN.CHANNEL et une file d'attente locale vide appelée MQIPT.LOCAL.QUEUE.
  2. Sur le serveur MQIPT :
    1. Créez un répertoire appelé exits dans le répertoire de base MQIPT en exécutant la commande suivante dans une invite de commande:
      md C:\mqiptHome\exits
    2. Dans le répertoire C:\mqiptHome\exits (où C:\mqiptHome est le répertoire dans lequel se trouve le fichier mqipt.conf ), créez un exemple de fichier de configuration appelé SampleRoutingExit.conf qui contient les noms de vos trois gestionnaires de files d'attente.

      Par exemple, le fichier de configuration peut contenir les entrées suivantes :

      server1.company2.com:1414
      server2.company2.com:1415
      server3.company2.com:1416
      Assurez-vous qu'il n'existe pas de lignes vides avant la première entrée dans le fichier et que chaque entrée est un nom de serveur valide. Si vous avez utilisé d'autres noms de serveur, modifiez ces noms en fonction de votre environnement.
    3. Ouvrez une invite de commande et entrez les commandes ci-après pour compiler l'exit. Vous n'avez pas à effectuer cette opération si vous n'avez pas modifié le code d'exit car l'exemple d'exit compilé est fourni avec MQIPT.
      C:
      cd \mqipt\samples\exits
      javac -classpath C:\mqipt\lib\com.ibm.mq.ipt.jar;. SampleRoutingExit.java
    4. Entrez la commande suivante pour copier le fichier de classe d'exit compilé SampleRoutingExit.class dans le répertoire C:\mqiptHome\exits :
      copy C:\mqipt\samples\exits\SampleRoutingExit.class C:\mqiptHome\exits
    5. Editez mqipt.conf et ajoutez une définition de route:
      [route]
      ListenerPort=1415
      Destination=server1.company2.com
      DestinationPort=1414
      SecurityExit=true
      SecurityExitPath=C:\mqiptHome\exits
      SecurityExitName=SampleRoutingExit
      Notez qu'il n'est pas nécessaire de définir SecurityExitPath si vous placez SampleRoutingExit.conf dans le répertoire C:\mqiptHome\exits par défaut.
    6. Démarrez MQIPT.
      Ouvrez une invite de commande et entrez la commande suivante :
      C:\mqipt\bin\mqipt C:\mqiptHome -n ipt1
      C:\mqiptHome indique l'emplacement du fichier de configuration MQIPT, mqipt.conf, et ipt1 est le nom à attribuer à l'instance de MQIPT.
      Les messages suivants indiquent que MQIPT a démarré correctement:
      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. A l'invite de commande sur le système client IBM MQ , entrez les commandes suivantes:
    1. Définissez la variable d'environnement MQSERVER :
      SET MQSERVER=MQIPT.CONN.CHANNEL/TCP/10.9.1.2(1415)
    2. Insérez trois messages :
      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
      Appuyez deux fois sur Entrée après avoir tapé chaque message.
    3. Obtenez les messages :
      amqsgetc MQIPT.LOCAL.QUEUE MQIPT.QM1
      amqsgetc MQIPT.LOCAL.QUEUE MQIPT.QM1
      amqsgetc MQIPT.LOCAL.QUEUE MQIPT.QM1
      Les messages,Hello world 1,Hello world 2etHello world 3sont renvoyés.