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

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

9.3.10. Извлечение сообщений из очереди

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

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

  1. Если в очереди queue1 не осталось сообщений, добавьте в нее несколько тестовых сообщений (напрямую либо через псевдоним).
  2. Следующая команда извлекает все сообщения из очереди менеджера очередей по умолчанию:
    amqsget queue1

    Для каждого из сообщений в очереди эта команда выводит на экран строку, перед завершением программа ожидает добавления новых сообщений в течение 10 секунд. Если за это время в очередь будут добавлены новые сообщения, программа немедленно выводит их на экран и ожидает следующие 10 секунд.

    Вывод программы-примера выглядит так:

    Sample AMQSGET0 start
    message <Redbook test message 1>
    message <Redbook test message 2>
    message <Redbook test message 3>
    no more messages
    Sample AMQSGET0 end
  3. Обратите внимание, что после завершения этой программы в очереди не останется сообщений. В этом можно убедиться путем просмотра содержимого очереди.

9.3.11. Удаление объекта очереди

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

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

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

  1. Щелкните правой кнопкой объект псевдонима очереди, queue1.persistent, в таблице менеджера очередей и выберите Delete – система запросит подтверждение.
  2. Пометьте флажком имя удаляемого объекта и щелкните Yes.
  3. После того как окно состояния закроется, система вновь запросит подтверждение. Щелкните OK.
  4. Обратите внимание на отсутствие удаленного объекта в таблице менеджера очередей.
Применение команд MQSC.

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

  1. Выполните следующую команду MQSC (из-под runmqsc ):
    DELETE QALIAS('queue1.persistent')
    Генерируется следующий вывод:
    AMQ8007: WebSphere MQ queue deleted.
  2. Заметьте, что объект удаленной очереди больше не отображается следующими командами MQSC:
    DISPLAY QUEUE(*)
    DISPLAY QALIAS(*)

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

Псевдоним менеджера очередей лишь один из примеров объектов удаленных очередей, создаваемых при помощи WebSphere MQ Explorer или команды MQSC DEFINE QREMOTE.

Примечание Псевдоним менеджера очередей – это объект удаленной очереди, у которого атрибут "имя удаленной очереди" пуст (не имеет значения). Подробнее его использование освещается в "Построение инфраструктуры WebSphere MQ: практическое руководство" .
Применение WebSphere MQ Explorer

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

  1. Щелкните правой кнопкой папку Queues менеджера host1/qm1 и выберите New\Remote Queue – откроется страница "Enter a name" мастера New Remote Queue, помеченная красным крестиком.
  2. Введите host1/qm1.alias в поле Name.
  3. Щелкните Next, не щелкая Finish, – откроется страница Change the properties of the new Alias Queue, на которой можно задать атрибуты псевдонима очереди.
  4. Введите host1/qm1 в поле Remote Queue Manager.
  5. В поле Description введите следующее значение:
    Redbook example queue manager alias to host1/qm1
  6. Щелкните Finish, затем щелкните OK в окне сообщения AMQ4148 (об успешном создании объекта).
Применение команд MQSC

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

  1. Выполните следующую команду MQSC (из-под runmqsc ):
    DEFINE QREMOTE('host1/qm1.alias') RNAME('') RQMNAME('host1/qm1') +
    DESCR('Redbook example queue manager alias to host1/qm1')
  2. Проверьте атрибуты объекта удаленной очереди, представляющего псевдоним менеджера очередей, с помощью команды MQSC следующего вида:
    DISPLAY QREMOTE('host1/qm1.alias') RNAME RQMNAME DESCR
    Примечание Помните: имя host1/qm1 должно вводиться в нижнем регистре, поэтому важно заключить аргумент RQMNAME в одинарные кавычки при объявлении объекта псевдонима очереди.

9.3.13. Указание менеджера очередей при обращении к очереди

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

Программы-примеры для WebSphere MQ поддерживают широкий спектр функций и параметров, в этом примере мы рассмотрим дополнительные функции программы-примера amqsput.

Примечание Использованная в этом примере команда удобна для проверки маршрутов к удаленным менеджерам очередей. Для этого через локальный менеджер очередей отправляют тестовые сообщения на имя удаленного менеджера очередей.
Применение программ-примеров WebSphere MQ

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

  1. Запустите программу-пример для WebSphere MQ следующим образом и добавьте в очередь несколько сообщений:
    amqsput queue1 host1/qm1 8208 0 host1/qm1.alias
    Программу-пример здесь вызывают со следующими параметрами:
    • queue1 – имя очереди;
    • host1/qm1 – имя менеджера очередей, к которому подключаются для отправки сообщений;
    • 8208 – десятичный код параметров запроса, который должен быть передан при вызове MQOPEN (для данного примера это не важно). Такой вызов заставляет открыть очередь сообщений для записи с целью добавления в нее сообщений и приводит к неудаче последующие попытки добавить сообщения, если менеджер очередей находится в процессе "плавной остановки");
    • 0 – код, определяющий вызов MQCLOSE без параметров (не важно для данного примера);
    • host1/qm1.alias – имя объекта менеджера очередей, заданное при вызове MQOPEN (дополнительный параметр, используемый в этом примере). Оно соответствует ранее объявленному псевдониму менеджера очередей, а не менеджеру очередей, к которому приложение подключено напрямую. Механизм разрешения имен очередей преобразует эту ссылку в имя локального менеджера очередей ( host1/qm1 ) через псевдоним менеджера очередей.
    Примечание Если уничтожить объект удаленной очереди, представляющий псевдоним менеджера очередей, неверно задать имя менеджера очередей (оно чувствительно к регистру) либо значение атрибута удаленной очереди или допустить ошибку при вызове команды amqsput, вызов MQOPEN завершится с кодом 2087 MQRC_UNKNOWN_REMOTE_Q_MGR.
  2. Просмотрите содержимое queue1. Вы увидите, что сообщения доставлены в очередь queue1, обслуживаемую менеджером host1/qm1, включая сообщения, переданные через псевдоним host1/qm1.alias.

9.3.14. Удаление менеджера очередей

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

Примечание Команда dltmqm WebSphere MQ не запрашивает подтверждение перед удалением менеджеров очередей, отменить ее также невозможно. Поэтому пользуйтесь данной командой с осторожностью.
Применение WebSphere MQ Explorer

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

  1. Если менеджер очередей host1/qm1 работает, щелкните его правой кнопкой и выберите Stop, чтобы остановить этот менеджер очередей.
  2. Выберите метод остановки и щелкните OK – откроется окно состояния. Когда оно закроется, щелкните правой кнопкой менеджер очередей host1/qm1 в дереве навигатора и выберите Delete.
  3. Проверьте имя удаляемого менеджера очередей в окне запроса подтверждения. Если все в порядке, щелкните Yes, чтобы удалить менеджер, в противном случае щелкните No для возврата в WebSphere MQ Explorer. При выборе удаления откроется окно состояния.
  4. По завершении операции окно состояния закроется – менеджер очередей будет удален, он также исчезнет из дерева объектов навигатора.
Применение управляющих команд WebSphere MQ

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

  1. Остановите менеджер очередей (см. "Обмен сообщениями с использованием WebSphere MQ: практическое введение" ), например такой командой:
    endmqm -w host1/qm1
  2. После остановки менеджер очередей можно удалить следующей командой:
    dltmqm host1/qm1
Примечание Подобно команде endmqm, команда dltmqm требует указывать имя менеджера очередей, даже при удалении менеджера очередей по умолчанию.

9.4. Создание служб обработки запросов и ответов на основе очереди

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

9.4.1. Создание и запуск менеджера очередей – основы службы

Ниже показано, как создать менеджер очередей host1/echo.hub, который выступит в роли основы для службы, которая возвращает в составе ответа текст, пришедший в составе запроса.

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

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

  1. Щелкните правой кнопкой папку Queue Managers и выберите New\Queue Manager.
  2. Введите host1/echo.hub в поле Queue manager name.
  3. Снимите флажок Make this queue manager the default queue manager.
  4. Щелкните Next.
  5. Щелкните Next, чтобы принять параметры ведения журнала, заданные по умолчанию.
  6. Пометьте флажок Start queue manager – это необходимо для автоматического запуска менеджера очередей.
  7. Щелкните Next.
  8. Снимите флажок Create listener configured for TCP/IP.
  9. Щелкните Finish.
Применение управляющих команд WebSphere MQ

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

  1. Создайте менеджер очередей, не делая его менеджером очередей по умолчанию, при помощи следующей команды:
    crtmqm host1/echo.hub
  2. Запустите менеджер очередей следующей командой:
    • в Windows:
      amqmdain qmgr start host1/echo.hub
    • в UNIX:
      strmqm host1/echo.hub

9.4.2. Создание очереди-основы службы

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

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

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

  1. Щелкните правой кнопкой папку Queues менеджера очередей host1/echo.hub и выберите команду New\Local Queue.
  2. Введите echo в поле Name.
  3. Щелкните Next.
  4. В поле Description введите следующее значение:
    Queue hosting the echo service
  5. Щелкните Finish.
Применение команд MQSC

Выполните следующую команду MQSC, адресованную менеджеру host1/echo.hub:

DEFINE QLOCAL('echo') +
 DESCR('Queue hosting the echo service')
Михаил Завалко
Михаил Завалко
Беларусь, Минск
Artem Bardakov
Artem Bardakov
Россия