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

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

9.5.2. Создание и запуск менеджера очередей

Прежде всего необходимо создать и запустить менеджер очередей host1/jmspubsub, обеспечивающий доступ к брокеру публикации-подписки.

Это делается с помощью управляющих команд WebSphere MQ или WebSphere MQ Explorer (см. "Обмен сообщениями с использованием WebSphere MQ: практическое введение" ).

9.5.3. Запуск брокера на менеджере очередей

WebSphere MQ V6.0 поддерживает объект службы, который создается в менеджере очередей и позволяет запустить брокер публикации-подписки на этом менеджере.

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

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

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

  1. Выберите папку Services менеджера очередей host1/jmspubsub.
  2. Щелкните значок, включающий отображение системных объектов, если это еще не сделано (см. рис. 9.2).
  3. Щелкните правой кнопкой службу SYSTEM.BROKER и выберите команду Properties.
  4. Установите для поля Service значение Queue manager, чтобы брокер публикации-подписки запускался вместе с менеджером очередей.
  5. Щелкните OK.
  6. Щелкните правой кнопкой службу SYSTEM.BROKER и выберите Start, чтобы запустить брокер.
Отображение системных объектов в WebSphere MQ Explorer

увеличить изображение
Рис. 9.2. Отображение системных объектов в WebSphere MQ Explorer
Применение команд MQSC

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

  1. Чтобы настроить брокер публикации-подписки WebSphere MQ для запуска вместе с менеджером очередей, выполните следующую команду MQSC в отношении менеджера host1/jmspubsub:
    ALTER SERVICE('SYSTEM.BROKER') CONTROL(QMGR)
  2. Чтобы запустить брокер публикации-подписки, выполните следующую команду MQSC в отношении менеджера host1/jmspubsub:
    START SERVICE('SYSTEM.BROKER')

9.5.4. Настройка менеджера очередей для работы с JMS

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

Для этого поставляется специальный сценарий MQSC. Выполните его над менеджером очередей host1/jmspubsub, как показано ниже.

  • В Windows (команда вводится как одна строка):
    runmqsc host1/jmspubsub < "C:\Program Files\IBM\WebSphere MQ \Java\bin\MQJMS_
    PSQ.mqsc"
  • В UNIX (кроме AIX 5L):
    runmqsc host1/jmspubsub < /opt/mqm/java/bin/MQJMS_PSQ.mqsc
  • В AIX 5L:
    runmqsc host1/jmspubsub < /usr/mqm/java/bin/MQJMS_PSQ.mqsc

9.5.5. Настройка простого JMS-провайдера

JMS – стандартный интерфейс, который поддерживается не только WebSphere MQ. Поэтому операции, специфичные для WebSphere MQ, необходимо сопоставить с операциями, описанными в стандарте JMS.

Приложения могут оперативно получать сведения о таких сопоставлениях, запрашивая из каталога информацию о том, как предоставляется доступ к JMS. Этот каталог – не обязательно каталог файловой системы, он может быть распределенной системой. Часто в производственной среде такой каталог находится на сетевом сервере LDAP (Lightweight Directory Access Protocol). Такая конфигурация позволяет оперативно вносить изменения. Приложения, использующие JMS, запрашивают сведения о доступе к JMS из каталога через интерфейс под названием JNDI (Java Naming and Directory Interface™).

В приведенном ниже простом примере для хранения подобной информации в файловой системе создается каталог, далее подготавливается его содержимое при помощи средств WebSphere MQ JMS Administration tool.

Для работы с WebSphere MQ JMS Administration tool необходимо сделать следующее.

  1. В рабочем каталоге, созданном для этого примера, создайте следующий каталог (но не переходите в него):
    jms.provider
  2. Создайте в рабочем каталоге файл JMSAdmin.config следующего содержания:
    INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory PROVIDER_
    URL=file:jms.provider SECURITY_AUTHENTICATION=none
    Этот файл служит для настройки инструмента JMS Administration tool с целью подготовки содержимого созданного ранее каталога файловой системы.

9.5.6. Настройка JMS с помощью JMS Administration tool

Инструмент WebSphere MQ JMS Administration tool создает объекты в каталоге, доступном через интерфейс JNDI. По завершении настройки этот каталог станет доступным приложениям, которые работают c WebSphere MQ и JMS через JNDI. Эти приложения смогут настраивать доступ к JMS, предоставляемый им WebSphere MQ.

Синтаксис команд WebSphere MQ JMS Administration tool аналогичен таковому у команд MQSC, только имена объектов и атрибутов в нижнем регистре не обязательно заключать в одинарные кавычки.

Подробнее о WebSphere MQ JMS Administration tool и соответствующих объектах см. WebSphere MQ V6.0 Using Java, SC34-6591.

Ниже рассказывается, как создать объект Topic Connection Factory, определяющий способ подключения JMS-приложения к провайдеру функций обмена сообщений по принципу публикации-подписки (publish/subscribe), а также объект Topic, определяющий "тему", в которой приложения смогут публиковать свои сообщения и подписываться на получение сообщений этой темы.

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

  1. Запустите инструмент WebSphere MQ JMS Administration tool:
    • в Windows:
      "C:\Program Files\IBM\WebSphere MQ\Java\Bin\JMSAdmin.bat"
    • в UNIX (кроме AIX 5L):
      /opt/mqm/java/bin/JMSAdmin
    • в AIX 5L:
      /usr/mqm/java/bin/JMSAdmin
    После запуска программа генерирует следующий вывод:
    5724-H72, 5655-L82, 5724-L26 (c) Copyright IBM Corp. 2002,2005. All Rights
    Reserved. Starting Websphere MQ classes for Java(tm) Message Service
    Administration
    InitCtx>
  2. Создайте объект Topic Connection Factory (TCF) для подключения к брокеру публикации-подписки, работающему в менеджере очередей host1/jmspubsub. Для этого выполните следующую команду:
    DEFINE TCF(PubSub.TCF) QMANAGER(host1/jmspubsub) TRANSPORT(BIND)
  3. Создайте объект Topic для темы MQJMS/Samples/PubSub, выполнив следующую команду:
    DEFINE T(PubSub.T) TOPIC(MQJMS/Samples/PubSub)
  4. Остановите WebSphere MQ JMS Administration tool следующей командой:
    END

9.5.7. Копирование примера JMS-приложения WebSphere MQ

Приложение-пример, иллюстрирующее функции публикации и подписки на сообщения в WebSphere MQ JMS, находится в каталоге.

  1. В Windows:
    C:\Program Files\IBM\WebSphere MQ\Tools\Java\jms\JMSPubSub.java
  2. В UNIX (кроме AIX 5L):
    /opt/mqm/samp/java/jms/JMSPubSub.java
  3. В AIX 5L:
    /usr/mqm/samp/java/jms/JMSPubSub.java

Скопируйте этот файл в рабочий каталог, созданный для этого примера.

9.5.8. Модификация примера JMS-приложения WebSphere MQ

Ниже показано, как изменить пример JMS-приложения, чтобы он смог работать с созданным ранее каталогом через JNDI, а также с объектами, созданными в этом каталоге при помощи WebSphere MQ JMS Administration tool.

Также необходимо привести имена объектов в соответствие базовым правилам именования, принятым в данной системе, а не правилам LDAP (последние в данной книге не рассматриваются).

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

  1. Откройте файл JMSPubSub.java в текстовом редакторе.
  2. Найдите в коде следующие строки (в примере для WebSphere MQ V6.0 они начинаются со строки 88):
    String CTX_FACTORY = "com.sun.jndi.ldap.LdapCtxFactory"; String INIT_URL =
    "ldap://polaris/cn=PubSub,o=ibm_us,c=us";
  3. Отредактируйте следующие строки согласно параметрам конфигурации WebSphere MQ JMS Administration tool:
    String CTX_FACTORY = "com.sun.jndi.fscontext.RefFSContextFactory"; String
    INIT_URL = "file:jms.provider";
  4. Найдите в коде следующую строку (в примере для WebSphere MQ V6.0 – строка 98):
    TopicConnectionFactory tcf = (TopicConnectionFactory)ctx.lookup( "cn=PubSub.
    TCF" );
  5. Отредактируйте эту строку, подставив имя объекта Topic Connection Factory, созданного ранее при помощи WebSphere MQ JMS Administration tool:
    TopicConnectionFactory tcf = (TopicConnectionFactory)ctx.lookup( "PubSub.TCF" );
  6. Найдите в коде следующую строку (в примере для WebSphere MQ V6.0 – строка 112):
    Topic t = (Topic)ctx.lookup( "cn=PubSub.T" );
  7. Отредактируйте эту строку, подставив имя объекта Topic, созданного ранее при помощи WebSphere MQ JMS Administration tool:
    Topic t = (Topic)ctx.lookup( "PubSub.T" );
  8. Сохраните файл.

9.5.9. Компиляция приложения-примера

Компиляция примера JMS-приложения для WebSphere MQ, демонстрирующего публикацию и подписку, выполняется следующей командой:

javac JMSPubSub.java

В результате ее исполнения в рабочем каталоге создается файл JMSPubSub.class.

9.5.10. Запуск приложения-примера в режиме подписчика

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

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

  1. Откройте окно командной строки или терминальный сеанс, где будет запущен экземпляр программы, который станет подписчиком сообщений. Сделайте настройки, описанные в "Обмен сообщениями с использованием WebSphere MQ: практическое введение" .
  2. Выполните следующую команду, чтобы запустить программу-пример в режиме подписчика:
    • в Windows:
      java JMSPubSub -sub
    • в UNIX (кроме AIX 5L):
      java -D"java.library.path=/opt/mqm/java/lib" JMSPubSub -sub
    • в AIX 5L:
      java -D"java.library.path=/usr/mqm/java/lib" JMSPubSub -sub
    После запуска программа генерирует следующий вывод:
    [R]eceiveBlock, Receive[N]oWait, Receive[5]Secs, [Q]uit?
  3. Чтобы заставить экземпляр-подписчик ожидать публикации следующего сообщения по данной теме, нажмите R, затем Enter.
    Примечание Эти клавиши необходимо нажимать после получения каждого сообщения.

9.5.11. Запуск программы-примера в режиме издателя

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

Чтобы запустить программу-пример в режиме издателя, выполните следующие действия:

  1. Откройте окно командной строки или терминальный сеанс, где будет запущен экземпляр программы, который станет издателем сообщений. Сделайте настройки, описанные в "Обмен сообщениями с использованием WebSphere MQ: практическое введение" .
  2. Выполните следующую команду, чтобы запустить программу-пример в режиме издателя:
    • в Windows:
      java JMSPubSub -pub
    • в UNIX (кроме AIX 5L):
      java -D"java.library.path=/opt/mqm/java/lib" JMSPubSub -pub
    • в AIX 5L:
      java -D"java.library.path=/usr/mqm/java/lib" JMSPubSub -pub
    После запуска программа генерирует следующий вывод:
    [P]ublish message, [Q]uit?
  3. Чтобы опубликовать сообщение, нажмите P, затем Enter.
  4. Введите текст публикуемого сообщения и нажмите Enter. Сообщение будет опубликовано и станет доступным всем ожидающим подписчикам. Получив такое сообщение, подписчик генерирует вывод следующего вида:
    JMS Message class: jms_text JMSType: null
    JMSDeliveryMode: 2
    JMSExpiration: 0 JMSPriority: 4
    JMSMessageID: ID:414d5120686f7374312f6a6d73707562d1dcdd4220001e08
    JMSTimestamp: 1121839520615
    JMSCorrelationID:ID:414d5120686f7374312f6a6d73707562d1dcdd4220006f05
    JMSDestination: topic://MQJMS/Samples/PubSub JMSReplyTo: null JMSRedelivered:
    false
    JMS_IBM_PutDate:20050720
    JMSXAppID:host1/jmspubsub
    JMS_IBM_Format:MQSTR
    JMS_IBM_PutApplType:26
    JMS_IBM_MsgType:8 JMSXUserID:pbroad
    JMS_IBM_PutTime:06052061
    JMSXDeliveryCount:1
    Redbook test message