Компания IBM
Опубликован: 10.06.2008 | Доступ: свободный | Студентов: 733 / 55 | Оценка: 4.18 / 4.00 | Длительность: 26:27:00
Специальности: Системный архитектор
Лекция 9:

Обмен сообщениями с использованием WebSphere MQ: практическое введение

9.4.3. Ручное объявление очереди ответов

Ниже рассказывается, как вручную создать объект локальной очереди, которую запрашивающее приложение будет использовать для получения ответов. Это делается с использованием WebSphere MQ Explorer либо команд MQSC. Атрибуты очереди ответов имеют значения по умолчанию.

Применение WebSphere MQ Explorer

Выполните следующие действия.

  1. Щелкните правой кнопкой папку Queues менеджера host1/echo.hub и выберите New\Local Queue.
  2. Введите echo.replies.manual в поле Name.
  3. Щелкните Next.
  4. Введите в поле Description следующее значение:
    Manually defined reply-to queue for echo service
  5. Щелкните Finish.
Применение команд MQSC
Примечание Поскольку host1/echo.hub не является менеджером очередей по умолчанию, для запуска интерактивного сеанса MQSC применяется следующая команда:
runmqsc host1/echo.hub
Помните: для завершения интерактивного сеанса MQSC используется команда END.

Выполните следующую команду 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: практическое введение" .

Выполните следующие действия:

  1. Выполните команду 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
    Примечание Следите за регистром имен очередей в MQSC и WebSphere MQ Explorer, а также параметров этой команды. При возврате неожиданного кода завершения воспользуйтесь командой mqrc, чтобы получить его понятное описание в текстовой форме.
  2. Добавьте несколько сообщений через эту команду. После ввода каждого из сообщений нажимайте Enter. Чтобы прекратить отправку сообщений, нажмите Enter, не вводя ничего, – после этого программа в течение 10 секунд будет ожидать поступления ответов. На этот раз ответы не приходят, поскольку служба еще не настроена.
  3. Изучите сообщения, добавленные в эхо-очередь (очередь с ответами), обращая внимание на:
    • тип сообщения ( 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

Выполните следующие действия.

  1. Выберите папку Queues менеджера host1/echo.hub.
  2. Щелкните правой кнопкой в таблице строку очереди echo и выберите Clear Messages.
  3. В окне Clear queue оставьте флажок Queue will be cleared with the CLEAR command и щелкните Clear.
  4. Заметьте, что теперь значение атрибута "текущая длина очереди" равно нулю.
Применение команд 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

Выполните следующие действия.

  1. Щелкните правой кнопкой папку Process Definitions в менеджере host1/echo.hub и выберите New\Process Definition.
    Примечание Эта папка находится в папке Advanced менеджера очередей (см. окно навигатора).
  2. Введите amqsech в поле Name.
  3. Щелкните Next.
  4. Введите следующий текст в поле Description:
    The amqsech WebSphere MQ sample program
  5. Выберите подходящее значение параметра Application type:
    • в Windows: Windows NT ;
    • в UNIX: Unix.
  6. Введите путь к приложению:
    • в 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
  7. Щелкните Finish.
Применение команд MQSC

Выполните следующие действия.

  1. Выполните следующую команду 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')
  2. Выполните следующую команду MQSC для просмотра атрибутов объекта определения процесса:
    DISPLAY PROCESS('amqsech')
Примечание Следите за регистром атрибутов и имени процесса в объекте определения. На платформах UNIX путь также чувствителен к регистру.

9.4.7. Создание очереди инициации

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

Применение WebSphere MQ Explorer

Выполните следующие действия.

  1. Щелкните правой кнопкой папку Queues в менеджере host1/echo.hub и выберите New\Local Queue.
  2. Введите echo.initq в поле Name.
  3. Щелкните Next.
  4. Введите в поле Description следующий текст:
    Initiation queue for triggering the echo service
  5. Щелкните 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

Выполните следующие действия.

  1. Выберите папку Queues менеджера host1/echo.hub.
  2. Щелкните правой кнопкой в таблице строку очереди echo и выберите Properties.
  3. Перейдите в секцию Triggering.
  4. В поле Trigger control установите значение On.
  5. Назначьте параметру Trigger type значение First.
  6. Введите echo.initq в поле Initiation queue.
  7. Введите amqsech в поле Process name.
  8. Щелкните OK.
Применение команд MQSC

Выполните следующие действия.

  1. Выполните следующую команду MQSC в отношении менеджера host1/echo.hub:
    ALTER QLOCAL('echo') + TRIGGER TRIGTYPE(FIRST) INITQ('echo.initq') +
    PROCESS('amqsech')
  2. Проверьте атрибуты объекта очереди следующей командой MQSC:
    DISPLAY QLOCAL('echo') TRIGGER TRIGTYPE INITQ PROCESS
    Примечание Убедитесь, что выбран верный регистр для атрибутов.

9.4.9. Запуск триггерного монитора WebSphere MQ

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

Выполните следующие действия.

  1. Откройте окно командной строки либо запустите новый терминальный сеанс (запустив триггерный монитор, не останавливайте его – он еще потребуется при изучении этой главы; если монитор по каким-то причинам остановится, перезапустите его, как описано ниже. Чтобы остановить монитор, активируйте окно командной строки или сеанс, в котором он работает, и нажмите Ctrl+C ).
  2. Выполните следующую команду, чтобы запустить триггерный монитор 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