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

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

9.4.10. Отправка запроса службе

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

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

Триггерный монитор WebSphere MQ передает программе amqsech все сведения из триггерного сообщения, необходимые для определения очереди для обработки сообщений.

Программа amqsech генерирует ответы в виде копий исходных сообщений и направляет их очереди ответов, заданной в дескрипторах сообщений запросов.

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

  1. Выполните следующую команду:
    amqsreq echo host1/echo.hub echo.replies.manual
  2. Введите текст одного сообщения и нажмите Enter (пока не вводите пустую строку после сообщения).
  3. Изучите вывод триггерного монитора, включая дополнительную информацию, которую он отображает. Монитор сообщает о том, что в очереди инициации было сгенерировано триггерное сообщение, обработанное затем триггерным монитором, который запустил в ответ программу amqsech. Спустя примерно 10 секунд (после завершения программы amqsech, не дождавшейся следующего сообщения) генерируется дополнительный вывод примерно такого вида:
    C:\PROGRA~1\IBM\WEBSPH~1\Tools\c\samples\bin\amqsech.exe "TMC 2echo amqsech
    C:\Program Files\IBM\WebSphere MQ\Tools\c\samples\bin\amqsech.exe
    host1/echo.hub
    "
    Sample AMQSECHA start
    Example request message
    MQGET ended with reason code 2033
    Sample AMQSECHA end
    End of application trigger.
  4. Этот вывод свидетельствует о том, что программа amqsech, запущенная триггерным монитором WebSphere MQ, обработала сообщение и отправила ответ в очередь echo.replies.manual, заданную в команде, которой вызывается amqsreq.

    Изучите сообщение, полученное очередью echo.replies.manual. Если для этого используется программа amqsbcg, запустите ее в новом окне командной строки, чтобы не прерывать работу amqsreq.

    Обратите внимание на следующие сведения в составе ответа:

    • тип сообщения ( MsgType ) – ответ (reply, код 2);
    • параметры, такие как идентификатор сообщения ( MsgId ) и корреляционный идентификатор ( CorrelId ), определены (имеют значения), поскольку amqsech копирует идентификатор сообщения из дескриптора сообщения-запроса в поле корреляционного идентификатора дескриптора сообщения-ответа. Это позволяет запрашивающему приложению сопоставлять полученные ответы отправленным запросам. Уникальный идентификатор для сообщения-ответа генерируется WebSphere MQ.
  5. Вернитесь в окно командной строки, в котором был отправлен запрос, с помощью amqsreq. Нажмите Enter, не вводя ничего. Спустя примерно 10 секунд программа amqsreq завершится, генерируя следующий вывод:
    Sample AMQSREQ0 start
    server queue is echo
    replies to echo.replies.manual
    Example test message
    response <Example test message>
    no more replies
    Sample AMQSREQ0 end
Примечание Если вы столкнулись с трудностями, проверьте атрибуты всех объявленных ранее объектов, а также регистр имен объектов, параметры команд (включая параметры триггерного монитора WebSphere MQ).

9.4.11. Создание объекта модельной очереди для динамической очереди ответов

Ниже освещается определение объекта модельной очереди для создания временных динамических очередей ответов. Динамическое создание очередей ответов выполняет программа amqsreq при запросе службы echo. Для этого упражнения мы воспользуемся WebSphere MQ Explorer или командами MQSC.

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

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

  1. Щелкните правой кнопкой папку Queues в менеджере host1/echo.hub и выберите New\Model Queue.
  2. Введите echo.replies.tempdyn в поле Name.
  3. Щелкните Next.
  4. Введите следующий текст в поле Description:
    Temporary dynamic reply-to queues for echo service
  5. Перейдите в секцию Extended.
  6. Заметьте, что в поле Definition Type задано значение Temporary Dynamic.
  7. Щелкните Finish.
Применение команд MQSC

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

  1. Выполните следующую команду MQSC в отношении менеджера host1/echo.hub:
    DEFINE QMODEL('echo.replies.tempdyn') + DESCR('Temporary dynamic reply-to
    queues for echo service')
  2. Выполните следующую команду MQSC, чтобы проверить свойства созданного объекта:
    DISPLAY QMODEL('echo.replies.tempdyn') DESCR DEFTYPE
    Обратите внимание на тип определения (атрибут DEFTYPE ): он является временным и динамическим ( TEMPDYN ).

9.4.12. Отправка запроса с использованием временной динамической очереди ответов

Ниже рассказывается, как запросить службу (см. "Обмен сообщениями с использованием WebSphere MQ: практическое введение" ). При этом в командной строке вызова amqsreq в качестве приемника ответов задана модельная очередь echo.replies.tempdyn.

Когда программа amqsreq открывает модельную очередь, менеджер очередей автоматически создает временную динамическую очередь на основе атрибутов объекта модельной очереди echo.replies.tempdyn. По завершении программы amqsreq менеджер очередей автоматически удаляет этот объект. Если программа завершена досрочно, например нажатием Ctrl+C во время обработки, удаление будет выполнено через несколько секунд после остановки amqsreq.

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

  1. Запустите amqsreq следующей командой:
    amqsreq echo host1/echo.hub echo.replies.tempdyn
    Программа генерирует следующий вывод:
    Sample AMQSREQ0 start
    server queue is echo
    replies to AMQ.42DD88DE02C70120
    где AMQ.42DD88DE02C70120 – имя динамической очереди.
  2. Изучите свойства временной динамической очереди следующим образом.
    • С помощью WebSphere MQ Explorer:
      • Выберите папку Queues менеджера очередей host1/echo.hub.
      • Включите в WebSphere MQ Explorer отображение временных очередей (см. рис. 9.1).
        Отображение временных очередей в WebSphere MQ Explorer

        увеличить изображение
        Рис. 9.1. Отображение временных очередей в WebSphere MQ Explorer
      • Обратите внимание на идентичность описания динамической очереди и объекта модельной очереди, на основе которого она создана.
      Примечание Временные динамические очереди, имена которых начинаются с AMQ.MQEXPLORER, созданы WebSphere MQ Explorer на основе модельной очереди SYSTEM.MQEXPLORER.REPLY.MODEL. WebSphere MQ Explorer использует интерфейс запросов и ответов, поддерживаемый командными серверами менеджеров очередей.
    • С помощью команд MQSC.
      • Выполните следующую команду MQSC в отношении менеджера host1/echo.hub:
        DISPLAY QL('AMQ.*') DEFTYPE DESCR
      • Заметьте, что значение атрибута "описание" ( DESCR ) динамической очереди идентично описанию объекта модельной очереди, на основе которого была создана эта очередь.
  3. Заметьте, что с приложением amqsreq работают так же, как с очередью, объявленной вручную.
  4. Обратите внимание, что после завершения приложения amqsreq временная динамическая очередь удаляется автоматически.
Примечание Приложение-пример amqsreq не поддерживает постоянные динамические очереди, поскольку оно не позволяет указать параметры, необходимые для удаления очереди после того, как она будет закрыта. Однако можно поэкспериментировать с модельными очередями, объявленными как постоянные динамические очереди (тип определения – PERMDYN ), и программой amqsreq. Временные очереди этого типа необходимо удалять вручную с помощью WebSphere MQ Explorer или команд MQSC.