Россия |
Создание интерфейсов передачи сообщений. Триггеринг
Процессы WebSphere MQ, триггеринг и автоматический старт каналов
Как правило, после поступления сообщений в очередь назначения, они обрабатываются различными прикладными программами, например, считываются из очереди и помещаются в базу данных. WebSphere MQ имеет возможность запускать процессы, как только одно или определенное количество сообщений поступает в очередь.
Процесс WebSphere MQ это объект, содержащий информацию о прикладной программе, которая может быть выполнена на определенных условиях при использовании механизма триггеринга . Форма для создания процесса изображена на рис. 4.10.
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. Рассмотрим шаги для реализации поставленной задачи:
- Создать очередь инициализации for_user_init.
-
Создать файл c:\temp\trig.bat, содержащий строку
net send user1 Пришло сообщение в очередь FOR_USER_INF.Q
который будет посылать сообщения пользователю user1,
- Создать процесс 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);
- Выполнить старт 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 запущена.