Интеграция приложений на основе WebSphere MQ

Процессы WebSphere MQ, триггеринг и автоматический старт каналов


Как правило, после поступления сообщений в очередь назначения, они обрабатываются различными прикладными программами, например, считываются из очереди и помещаются в базу данных. WebSphere MQ имеет возможность запускать процессы, как только одно или определенное количество сообщений поступает в очередь.

Процесс WebSphere MQ это объект, содержащий информацию о прикладной программе, которая может быть выполнена на определенных условиях при использовании механизма триггеринга. Форма для создания процесса изображена на рис. 4.10.


Рис. 4.10.  Форма для создания процесса WebSphere MQ

Process Definition Name - имя процесса. Уникально в пределах одного менеджера и должно отличаться от его имени. Может совпадать с именами других объектов менеджера.

Description - описание процесса.

Application Type - тип приложения. Зависит от операционной системы, на которой установлен менеджер очередей.

Application Identifier - имя выполняемой программы с указанием пути.

Environment Data - данные, которые могут быть переданы сервису Trigger Monitor.

User Data - данные, которые могут быть переданы выполняемой программе.

Для запуска процесса необходимы условия:

  • сообщения поступают в очередь;
  • приоритет сообщения не ниже приоритета, указанного в атрибуте Trigger Message Priority;
  • количество сообщений в очереди находится в соответствии с атрибутом Trigger Type;
  • существует очередь инициализации;
  • атрибут Trigger Control установлен в значение On;
  • существует и стартована служба сервиса WebSphere MQ Trigger monitor, в параметрах которой указана соответствующая очередь инициализации или запущена программа runmqtrm.

Предположим, что необходимо информировать пользователя о приходе каждого сообщения в очередь FOR_USER_INF.Q. Рассмотрим шаги для реализации поставленной задачи:

  1. Создать очередь инициализации for_user_init.
  2. Создать файл c:\temp\trig.bat, содержащий строку

    net send user1 Пришло сообщение в очередь FOR_USER_INF.Q

    который будет посылать сообщения пользователю user1,

  3. Создать процесс NET_SEND.P с атрибутами:
    • Process Definition Name - NET_SEND.P;
    • Application Type - Windows NT;
    • Application Identifier - c:\temp\trig.bat.
    • Создать локальную очередь FOR_USER_INF.Q с атрибутами
      • Queue Name - FOR_USER_INF.Q;
      • Trigger Control - On;
      • Trigger Type - Every;
      • Trigger Depth - 1;
      • Trigger Message Priority - 0;
      • Initiation Queue Name - for_user_init ;
      • Process Name - NET_SEND.P.
      • Создать службу сервиса WebSphere MQ Trigger Monitor:
        • Запустить утилиту создания и управления сервисами WebSphere MQ;
        • Вызвать контекстное меню, правой кнопкой мыши щелкнув по имени менеджера, выбрать пункт Create, далее Trigger Monitor;
        • Ввести имя очереди инициализации - for_user_init;
        • После нажатия на кнопку OK в правой части консоли WebSphere MQ Services появится созданный объект Trigger Monitor (рис. 4.11);


          увеличить изображение
          Рис. 4.11.  Консоль WebSphere MQ Services

        • Выполнить старт Trigger Monitor, нажав на кнопку "Старт", расположенную на панели управления.
        • Поместить тестовое сообщение в очередь FOR_USER_INF.Q и убедиться, что сетевое сообщение с текстом "Пришло сообщение в очередь FOR_USER_INF.Q" отправлено пользователю user1.

          Вместо создания службы сервиса WebSphere MQ Trigger Monitor можно выполнить программу runmqtrm. Синтаксис команды

          runmqtrm -q for_user_init

        В этом случае процесс NET_SEND.P будет выполняться только тогда, когда программа runmqtrm запущена.



        Содержание раздела