Обмен сообщениями с использованием WebSphere MQ: практическое введение
9.4.3. Ручное объявление очереди ответов
Ниже рассказывается, как вручную создать объект локальной очереди, которую запрашивающее приложение будет использовать для получения ответов. Это делается с использованием WebSphere MQ Explorer либо команд MQSC. Атрибуты очереди ответов имеют значения по умолчанию.
Применение WebSphere MQ Explorer
Выполните следующие действия.
- Щелкните правой кнопкой папку Queues менеджера host1/echo.hub и выберите New\Local Queue.
- Введите echo.replies.manual в поле Name.
- Щелкните Next.
- Введите в поле Description следующее значение:
Manually defined reply-to queue for echo service
- Щелкните Finish.
Применение команд MQSC
runmqsc host1/echo.hub
Выполните следующую команду MQSC для менеджера host1/echo.hub:
DEFINE QLOCAL('echo.replies.manual') + DESCR('Manually defined reply-to queue for echo service')
9.4.4. Добавление и анализ тестового запроса
Ниже рассказывается, как добавить тестовое сообщение с запросом. Также вы узнаете, как изучить это сообщение, чтобы понять его отличие от сообщения-дейтаграммы. Для этого вы воспользуетесь программами-примерами WebSphere MQ. О просмотре очередей см. в "Обмен сообщениями с использованием WebSphere MQ: практическое введение" .
Выполните следующие действия:
- Выполните команду amqsreq, вызывающую одноименную программу–пример WebSphere MQ:
amqsreq echo host1/echo.hub echo.replies.manual
Примечание Эту команду вызывают со следующими параметрами:Первоначально эта команда генерирует следующий вывод:- echo – имя очереди-основы службы, предоставляющей интерфейс запрос-ответ; в настоящее время активных служб, обрабатывающих сообщения в этой очереди, нет;
- host1/echo.hub – имя менеджера очередей, к которому подключается запрашивающее приложение;
- echo.replies.manual – имя очереди ответов, которое запрашивающее приложение указывает в дескрипторах сообщений с запросами; запрашивающее приложение ожидает поступления ответов в эту очередь.
Sample AMQSREQ0 start server queue is echo replies to echo.replies.manual
- Добавьте несколько сообщений через эту команду. После ввода каждого из сообщений нажимайте Enter. Чтобы прекратить отправку сообщений, нажмите Enter, не вводя ничего, – после этого программа в течение 10 секунд будет ожидать поступления ответов. На этот раз ответы не приходят, поскольку служба еще не настроена.
- Изучите сообщения, добавленные в эхо-очередь (очередь с ответами), обращая внимание на:
- тип сообщения ( MsgType ): это запрос (код 1);
- имя эхо-очереди ( echo.replies.manual );
- менеджер очередей, обслуживающий эхо-очередь ( host1/echo.hub );
- при использовании WebSphere MQ Explorer выберите секцию Identifiers в окне свойств сообщения. Обратите внимание на то, что идентификатор сообщения ( MsgId ) представлен уникальным значением, сгенерированным WebSphere MQ;
- также заметьте, что поле корреляционного идентификатора ( CorrelId ) пусто.
9.4.5. Очистка очереди-основы службы
Ниже рассказывается, как очистить очередь – основу службы. Это необходимо, чтобы сообщения, ранее добавленные в очередь, не помешали генерации (с использованием правил срабатывания, triggering rules) триггерных сообщений WebSphere MQ в ответ на поступление последующих сообщений. Если при выполнении последующих упражнений у вас возникнут проблемы, возможно, описанные ниже действия помогут устранить их.
Это упражнение можно выполнить с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
- Выберите папку Queues менеджера host1/echo.hub.
- Щелкните правой кнопкой в таблице строку очереди echo и выберите Clear Messages.
- В окне Clear queue оставьте флажок Queue will be cleared with the CLEAR command и щелкните Clear.
- Заметьте, что теперь значение атрибута "текущая длина очереди" равно нулю.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера host1/echo.hub:
CLEAR QLOCAL('echo')
9.4.6. Создание определения процесса для службы
Ниже демонстрируется организация службы обработки запросов и ответов, работающей на базе очереди echo, с применением программы-примера amqsech. Эта программа предназначена для запуска с помощью триггеров WebSphere MQ.
Далее рассказывается, как создать определение процесса, необходимого для запуска amqsech – приложения-примера WebSphere MQ, представляющего требуемую службу. Это делается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
- Щелкните правой кнопкой папку Process Definitions в менеджере host1/echo.hub и выберите New\Process Definition.
- Введите amqsech в поле Name.
- Щелкните Next.
- Введите следующий текст в поле Description:
The amqsech WebSphere MQ sample program
- Выберите подходящее значение параметра Application type:
- в Windows: Windows NT ;
- в UNIX: Unix.
- Введите путь к приложению:
- в Windows:
C:\Program Files\IBM\WebSphere MQ\Tools\c\samples\bin\amqsech.exe
- В UNIX (кроме AIX 5L):
C:\Program Files\IBM\WebSphere MQ\Tools\c\samples\bin\amqsech.exe /opt/mqm/samp/bin/amqsech
- В AIX 5L:
/usr/mqm/samp/bin/amqsech
- в Windows:
- Щелкните Finish.
Применение команд MQSC
Выполните следующие действия.
- Выполните следующую команду MQSC для менеджера host1/echo.hub:
- в Windows:
DEFINE PROCESS('amqsech') + DESCR('The amqsech WebSphere MQ sample program') + APPLTYPE(WINDOWSNT) + APPLICID('C:\Program Files\IBM\WebSphere MQ\Tools\c\samples\bin\amqsech.exe')
- в UNIX (кроме AIX 5L):
DEFINE PROCESS('amqsech') + DESCR('The amqsech WebSphere MQ sample program') + APPLTYPE(UNIX) APPLICID('/opt/mqm/samp/bin/amqsech')
- в AIX 5L:
DEFINE PROCESS('amqsech') + DESCR('The amqsech WebSphere MQ sample program') + APPLTYPE(UNIX) APPLICID('/usr/mqm/samp/bin/amqsech')
- в Windows:
- Выполните следующую команду MQSC для просмотра атрибутов объекта определения процесса:
DISPLAY PROCESS('amqsech')
9.4.7. Создание очереди инициации
Ниже рассказывается, как создать локальную очередь с атрибутами по умолчанию, которая впоследствии станет очередью инициации, принимающей триггерные сообщения для очереди echo. Это делается при помощи WebSphere MQ Explorer либо команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
- Щелкните правой кнопкой папку Queues в менеджере host1/echo.hub и выберите New\Local Queue.
- Введите echo.initq в поле Name.
- Щелкните Next.
- Введите в поле Description следующий текст:
Initiation queue for triggering the echo service
- Щелкните Finish.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера host1/echo.hub:
DEFINE QLOCAL('echo.initq') + DESCR('Initiation queue for triggering the echo service')
9.4.8. Активация триггера для очереди-основы службы
Ниже описывается активация триггера для очереди echo. В данном примере используется триггер типа first, генерирующий триггерное сообщение при поступлении в очередь первого сообщения.
Применение WebSphere MQ Explorer
Выполните следующие действия.
- Выберите папку Queues менеджера host1/echo.hub.
- Щелкните правой кнопкой в таблице строку очереди echo и выберите Properties.
- Перейдите в секцию Triggering.
- В поле Trigger control установите значение On.
- Назначьте параметру Trigger type значение First.
- Введите echo.initq в поле Initiation queue.
- Введите amqsech в поле Process name.
- Щелкните OK.
Применение команд MQSC
Выполните следующие действия.
- Выполните следующую команду MQSC в отношении менеджера host1/echo.hub:
ALTER QLOCAL('echo') + TRIGGER TRIGTYPE(FIRST) INITQ('echo.initq') + PROCESS('amqsech')
- Проверьте атрибуты объекта очереди следующей командой MQSC:
DISPLAY QLOCAL('echo') TRIGGER TRIGTYPE INITQ PROCESS
Примечание Убедитесь, что выбран верный регистр для атрибутов.
9.4.9. Запуск триггерного монитора WebSphere MQ
Ниже рассказывается, как запустить триггерный монитор WebSphere MQ, отслеживающий поступление триггерных сообщений в ранее созданную очередь инициации echo.initq.
Выполните следующие действия.
- Откройте окно командной строки либо запустите новый терминальный сеанс (запустив триггерный монитор, не останавливайте его – он еще потребуется при изучении этой главы; если монитор по каким-то причинам остановится, перезапустите его, как описано ниже. Чтобы остановить монитор, активируйте окно командной строки или сеанс, в котором он работает, и нажмите Ctrl+C ).
- Выполните следующую команду, чтобы запустить триггерный монитор WebSphere MQ для менеджера очередей host1/echo.hub и очереди инициации echo.initq:После запуска эта команда генерирует следующий вывод:
runmqtrm -m host1/echo.hub -q echo.initq
5724-H72 (C) Copyright IBM Corp. 1994, 2004. ALL RIGHTS RESERVED. WebSphere MQ trigger monitor started. Waiting for a trigger message