Опубликован: 10.06.2008 | Уровень: специалист | Доступ: платный | ВУЗ: Компания IBM
Лекция 9:

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

9.3.6. Добавление тестовых сообщений в очередь

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

Видно, что после добавления сообщений в очередь значение ее атрибута "текущая длина" ( CURDEPTH ) изменяется и отражает число добавленных сообщений. О просмотре этого атрибута см. в "Обмен сообщениями с использованием WebSphere MQ: практическое введение" .

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

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

  1. Выделите папку Queues менеджера очередей host1/qm1, расположенную в папке Queue Managers в окне навигатора.
  2. Щелкните правой кнопкой строку queue1 в таблице и выберите команду Put Test Message – откроется одноименное окно.
  3. Введите в поле Message data текст сообщения.
  4. Щелкните Put message – поле Message data опустеет. Так можно ввести несколько тестовых сообщений; после ввода каждого сообщения щелкайте Put message.
  5. Щелкните Close, чтобы закрыть окно.
Применение программы-примера для WebSphere MQ
Примечание Путь к каталогу с примерами программ для WebSphere MQ должен быть добавлен к пути поиска в переменных окружения ОС.

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

  1. Выполните следующую команду:
    amqsput queue1
    Генерируется следующий вывод, после чего команда ожидает ввода пользователя:
    Sample AMQSPUT0 start
    target queue is queue1
  2. Введите сообщение и нажмите клавишу Enter. Так можно ввести несколько тестовых сообщений; после ввода каждого сообщения нажимайте Enter.
  3. Чтобы выйти, нажмите Enter, не вводя текста.
Примечание Если вы получаете сообщение об ошибке 2059 или 2058 (см. листинг ниже), проверьте, настроен ли менеджер очередей как менеджер по умолчанию (см. "Обмен сообщениями с использованием WebSphere MQ: практическое введение" ) и работает ли он (командой dspmq ):
Sample AMQSPUT0 start
MQCONN ended with reason code 2059
Получив сообщение, подобное следующему, проверьте имена указанной в команде очереди (включая регистр символов) и созданного объекта, о просмотре имен см. в "Обмен сообщениями с использованием WebSphere MQ: практическое введение" .
Sample AMQSPUT0 start
target queue is QUEUE1
MQOPEN ended with reason code 2085
unable to open queue for output
Sample AMQSPUT0 end
Для толкования кодов возврата служит команда mqrc, принимающая код как параметр. Ниже показаны примеры вывода mqrc для кодов 2058, 2059 и 2085:
2058 0x0000080a MQRC_Q_MGR_NAME_ERROR
2059 0x0000080b MQRC_Q_MGR_NOT_AVAILABLE
2085 0x00000825 MQRC_UNKNOWN_OBJECT_NAME
Другие коды возврата MQCONN, MQOPEN и MQPUT также можно расшифровать с помощью mqrc. Подробнее о кодах возврата см. в разделе "API completion and reason codes" руководства WebSphere MQ Messages, GC34-6601.

9.3.7. Просмотр сообщений, добавленных в очередь

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

Сообщения, добавляемые в очередь, являются непостоянными ( nonpersistent messages ). В поле reply-to queue manager сообщений автоматически записывается строка host1/qm1 менеджером, в чью очередь добавлены эти сообщения.

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

В силу этой причины значение reply-to queue не определялось WebSphere MQ Explorer или программой-примером amqsput при добавлении сообщения.

Сейчас мы воспользуемся интерфейсом WebSphere MQ Explorer либо программой-примером amqsbcg для WebSphere MQ.

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

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

  1. Щелкните правой кнопкой очередь в таблице менеджера очередей и выберите Browse Messages – откроется окно с индикатором хода операции, а затем окно Message browser.
  2. Каждая строка в таблице, отображаемой в окне Message browser, представляет одно из сообщений в очереди. В столбцах этой таблицы отображается информация о сообщении, которая находится в дескрипторе сообщения, а также содержимое или данные сообщения. Настраивая схему таблицы, можно изменять порядок столбцов, чтобы, например, переместить столбцы Persistence, Message type, Message data, Reply-to queue и Reply-to Queue Manager в начало таблицы.
  3. Некоторые типы сообщений лучше просматривать в виде двоичных данных, а не текста. Для этого дважды щелкните строку таблицы, представляющую сообщение, – откроется окно свойств сообщения. Щелкните секцию Data в этом окне.
Применение программы-примера для WebSphere MQ

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

  1. Выполните следующую команду для просмотра сообщений в очереди менеджера по умолчанию; вывод команды будет перенаправлен в файл queue1.txt:
    amqsbcg queue1 > queue1.txt
  2. Откройте queue1.txt в любом текстовом редакторе. Для каждого из сообщений в файле содержатся сведения из дескриптора и содержимое в двоичном и текстовом (справа) представлении.

Читать сведения из такого файла сложнее, чем в WebSphere MQ Explorer. Разберем значение наиболее интересных полей вывода команды amqsbcg.

MsgType : 8

Тип 8 соответствует дейтаграммам. Запросы имеют тип 1, ответы – 2, отчеты – 4.

Persistence : 0

Значение "0" свидетельствует о том, что сообщение является непостоянным, а значение "1", напротив, говорит о том, что это сообщение является постоянным.

ReplyToQ : ' '

В этом поле отображается 48-значное имя очереди ответов (reply-to queue). Если в имени меньше 48 символов, недостающие символы заменяются пробелами, расположенными справа. Такие данные называются дополненными пробелами (blankpadded), они часто используются в структурах WebSphere MQ. В этом примере данное поле в дескрипторе сообщений пусто.

ReplyToQMgr : 'host1/qm1 '

Это поле содержит 48-значное дополненное пробелами имя менеджера очереди ответов (reply-to queue manager), оно автоматически заполняется менеджером очередей при размещении сообщения.

**** Message ****
length – 20 bytes
00000000: 5265 6462 6F6F 6B20 7465 7374 206D 6573   'Redbook test mes'
00000010: 7361 6765                     'sage '

Здесь отображается содержимое сообщения в двоичном и (справа) в текстовом представлении. Это существенно облегчает просмотр содержимого некоторых типов сообщений, особенно объемных, которые проще просматривать в двоичном представлении. Впрочем, содержимое простых тестовых сообщений из наших примеров как раз удобнее просматривать в текстовом представлении.

Михаил Завалко
Михаил Завалко
Беларусь, Минск
Artem Bardakov
Artem Bardakov
Россия