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

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


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

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

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

Рис. 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);

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

          увеличить изображение
          Рис. 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 запущена.



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