В этой лекции обсуждаются следующие темы:
Настройка окружения
Подключение к менеджеру очередей в режиме клиента
Построение центрально-лучевой инфраструктуры
Создание кластеров менеджеров очередей
10.1. Настройка окружения
Для выполнения упражнений из этой лекции необходимо то же окружение, что было настроено для изучения лекции 9.
Единственное дополнение – TCP/IP-сеть, соединяющая компьютеры, на которых работают приложения и менеджеры очередей.
В этой лекции предполагается, что в сети может быть несколько компьютеров с разными хост-именами и IP-адресами. Впрочем, любое из приведенных ниже упражнений можно выполнить и на изолированной рабочей станции под управлением Windows или Linux, то есть наличие сетевого подключения не обязательно.
Примечание При использовании компьютера, не подключенного к сети, все хост-имена в этой лекции следует заменить идентификатором локального компьютера:localhost
Примеры хост-имен, используемых в этой лекции:host1.example.com
host2.example.com
Кроме того, в этой лекции указаны уникальные номера портов, которые прослушивают менеджеры очередей. Это означает, что данные номера портов можно использовать как на одном компьютере, так и на разных.
10.2. Подключение к менеджеру очередей в режиме клиента
В этом разделе рассказывается, как приложения подключаются к удаленным менеджерам очередей, получая доступ к тем же функциям, что и приложения, подключенные к локальным менеджерам очередей.
Ниже демонстрируется получение доступа к менеджеру очередей и его администрирование на примере менеджера host1/echo.hub, созданного в разделе 9.4. Эти инструкции позволят получить доступ к службе, функционирующей в этом менеджере очередей, через клиентское подключение.
Альтернативный вариант – создание и запуск нового менеджера очередей. В этом случае следует заменить host1/echo.hub именем созданного вами менеджера очередей.
Примечание Вышеописанные действия могут быть выполнены на одном компьютере. В этом случае просто подставьте вместо host1.example.com хост-имя или IP-адрес своего компьютера.Если ваш компьютер не имеет IP-адреса либо его адрес часто меняется, можно использовать универсальное хост-имя локального компьютера – localhost.
10.2.1. Создание и запуск слушателя
Ниже рассказывается, как создать и запустить для менеджера очередей слушатель (listener), предоставляющий возможность идентификации в сети. В WebSphere MQ 6.0 слушатели являются объектами WebSphere MQ, объявленными в менеджере очередей. Эти действия можно выполнить при помощи WebSphere MQ Explorer или команд MQSC.
Примечание Предполагается, что вы работаете с менеджером очередей WebSphere MQ V6.0, в прежних версиях слушатели создавались и запускались независимо от менеджеров очередей.
Слушатель отслеживает некоторый порт в TCP/IP-сети. Порт – фундаментальное понятие TCP/IP-сетей. Существует множество портов, которые могут прослушиваться сетевыми службами, работающими на компьютере. Предполагается, что выбранные для следующих примеров порты не прослушиваются другими службами. В противном случае выберите другой порт и замените им соответствующие номера портов в приведенных ниже примерах.
Если в системе работает единственный менеджер очередей, он обычно прослушивает порт 1414 – стандартный порт WebSphere MQ. В приведенных ниже инструкциях используется произвольный диапазон портов, который вряд ли будет занят другими менеджерами очередей и сетевыми службами.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Listeners в менеджере очередей и выберите New\TCP Listener.Примечание Папка Listeners находится внутри папки Advanced менеджера очередей (см. дерево папок в окне навигатора).Если флажок Create listener configured for TCP/IP на странице Enter listener options (Step 4) мастера Create Queue Manager был помечен, объект-слушатель LISTENER.TCP был создан автоматически.
В этом случае щелкните правой кнопкой объект-слушатель в таблице и выберите Stop. После остановки слушателя щелкните его правой кнопкой, выберите команду Delete и подтвердите удаление.
Введите LISTENER.TCP в поле name.
Щелкните Next.
Введите в поле Description следующий текст:TCP/IP Listener for queue manager
Введите 9001 в поле Port.
Установите для поля Control значение Queue Manager, чтобы слушатель автоматически запускался и останавливался вместе с менеджером очередей.
Щелкните Finish.
Щелкните правой кнопкой строку LISTENER.TCP в таблице и выберите Start – слушатель будет запущен.
Убедитесь, что в столбце Listener status содержится значение Running. В противном случае щелкните кнопку Refresh в правом верхнем углу экрана и снова проверьте состояние слушателя.
Примечание Если в столбце состояния по-прежнему находится значение Stopped, скорее всего, в системе работает другой менеджер очередей, прослушивающий выбранный порт. Проверьте наличие объекта-слушателя LISTENER.TCP в каждом из менеджеров очередей, работающих на компьютере.Менеджеры очередей, работающие на одном компьютере, должны прослушивать разные TCP/IP-порты.
Применение команд MQSC
Выполните следующие действия.
Создайте объект-слушатель, который автоматически запускается и останавливается вместе с менеджером очередей. Для этого выполните следующую команду MQSC в отношении менеджера очередей host1/echo.hub:DEFINE LISTENER('LISTENER.TCP') + TRPTYPE(TCP) PORT(9001) CONTROL(QMGR) +
DESCR('TCP/IP Listener for queue manager')
Запустите слушатель, выполнив следующую команду MQSC:START LISTENER('LISTENER.TCP')
Примечание Если вы используете WebSphere MQ Explorer, отмечайте флажок Create listener configured for TCP/IP на странице Enter listener options (Step 4) мастера Create Queue Manager, чтобы при необходимости автоматически создавать объекты-слушатели вместе с менеджерами очередей.Проверьте, свободен ли выбранный порт, перед щелчком Finish. Порт, к которому привязан объект-слушатель, можно изменить и после создания менеджера очередей. После смены порта непременно перезапустите слушатель.
10.2.2. Создание объекта канала серверного подключения
Объект канала серверного подключения определяет имя и атрибуты канала для клиентских подключений к менеджеру очередей.
Один из ключевых атрибутов, которые можно настроить для объекта канала серверного подключения, – идентификатор локального пользователя, под которым удаленные приложения подключаются через канал, представленный данным объектом (обычно это идентификатор пользователя MCA, MCAUSER).
Это удобно, поскольку приложения, обращающиеся к менеджеру очередей с удаленных машин, могут работать под различными пользовательскими учетными записями (например, если один из них работает на компьютере под управлением UNIX, а другой – на Windows-компьютере). При выполнении приведенных ниже упражнений можно использовать имя, под которым вы входите в систему. Это позволит приложениям, работающим на любом компьютере, обращаться к компьютеру, на котором работает менеджер очередей, с привилегиями администратора WebSphere MQ.
Ниже рассказывается, как создать объект канала серверного подключения с именем all.clients, который будет использоваться в примерах этого раздела для подключения приложений к менеджеру очередей. Это делается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Channels в менеджере host1/echo.hub и выберите New\Server-connection Channel.
Введите all.clients в поле Name.
Щелкните Next.
При желании перейдите в секцию MCA и укажите имя пользователя в поле MCA user ID.
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей host1/echo.hub:
DEFINE CHANNEL('all.clients') CHLTYPE(SVRCONN) MCAUSER('имя_пользователя')
10.2.3. Подключение с использованием переменной кружения MQSERVER
Клиентский канальный агент (message channel agent, MCA), доступный при работе с MQI напрямую (например, из приложений, написанных на С), может быть настроен при помощи переменных окружения. Базовые атрибуты, включая имя канала и подключения, настраиваются при помощи переменной MQSERVER.
Приложения, использующие базовый клиентский MCA , и те, что работают с менеджером очередей напрямую, создают с применением разных наборов библиотек WebSphere MQ. Библиотеки, применяемые в первом случае, обычно называются клиентскими библиотеками WebSphere MQ.
С WebSphere MQ поставляются версии базовых программ-примеров, таких как amqsput, amqsget, amqsbcg, amqsreq и amqsech, скомпилированных с использованием клиентских библиотек WebSphere MQ. Для вызова этих версий добавьте латинскую букву "c" к имени нужного приложения, например: amqsputc, amqsgetc, amqsbcgc, amqsreqc или amqsechc.
Примечание Клиентские MCA, предназначенные для использования с другими API, такими как Java, JMS, .NET и XMS, настраиваются по-другому. Подробнее об этом см. в руководстве WebSphere MQ по тому API, с которым вы работаете.
При подключении к менеджеру очередей в режиме клиента задают имя менеджера (обычно оно совпадает с именем менеджера, к которому требуется подключиться). Если вместо имени ввести звездочку (*), можно подключиться к произвольному менеджеру очередей.
Чтобы добавить или извлечь сообщения из очереди, подключившись к менеджеру очередей как клиент, с использованием переменной окружения MQSERVER и программ-примеров WebSphere MQ, выполните следующие действия.
Определите в локальном менеджере очередей очередь с произвольным именем (в данном примере – queue1 ).
Присвойте переменной окружения MQSERVER следующее значение:в Windows:set MQSERVER=all.clients/TCP/host1.example.com(9001)
в UNIX:MQSERVER=all.clients/TCP/'host1.example.com(9001)' export MQSERVER
Добавьте сообщения в очередь с помощью команды amqsputc:amqsputc queue1 host1/echo.hub
Для просмотра сообщений в очереди воспользуйтесь командой amqsbcgc:amqsbcgc queue1 host1/echo.hub > queue1.txt
Извлеките сообщения из очереди командой amqsgetc:amqsgetc queue1 host1/echo.hub
Для запроса эхо-службы, запускаемой с помощью триггера для очереди host1/echo.hub, выполните следующую команду:amqsreqc echo host1/echo.hub echo.replies.manual
Примечание При возникновении ошибок с кодами 2058 или 2059 проверьте системные журналы ошибок WebSphere MQ и менеджера очередей (см. раздел 5.3.15).
10.2.4. Подключение с использованием объекта канала клиентского подключения
Объекты каналов клиентского подключения в WebSphere MQ предназначены для исчерпывающей настройки атрибутов клиентских MCA.
При определении объекта канала клиентского подключения создается запись в файле, называемом "таблица определений клиентских каналов" (client channel definition table, CCDT), данного менеджера очередей. Он используется клиентами для получения сведений о доступных менеджерах очередей. Этот файл может быть создан любым менеджером очередей, а не только тем, к которому подключается приложение. Далее этот файл может быть скопирован на удаленные машины либо опубликован в сети.
Ниже рассказывается, как сконфигурировать базовые программы-примеры WebSphere MQ с использованием параметров, заданных в CCDT, при подключении к менеджерам очередей.
Выполните следующие действия.
Создайте для менеджера очередей host1/echo.hub два канала серверного подключения (см. раздел 10.2.2) с именами client.channel1 и client.channel2. Альтернативный вариант – определение отдельных каналов у различных менеджеров очередей, слушатели которых привязаны к разным портам одного или различных компьютеров.
Создайте два объекта канала клиентского подключения (оба для менеджера очередей host1/echo.hub ), их имена должны соответствовать именам ранее созданных объектов каналов серверных подключений.В WebSphere MQ Explorer.Щелкните правой кнопкой папку Client Connections для менеджера host1/echo.hub и выберите New\Client-connection Channel.
Введите client.channel1 в поле Name.
Щелкните Next.
Введите echo.hub в поле Queue manager name (здесь преднамеренно вводится имя, отличное от реального имени менеджера очередей).
Введите host1.example.com(9001) в поле Connection name.
Щелкните Finish.
Повторите шаги 1-6, чтобы создать второй объект канала клиентского подключения с именем client.channel2. Атрибуту, задающему имя менеджера очередей, должно быть присвоено значение echo.hub. Имя подключения может быть тем же, если оба объекта канала серверного подключения связаны с одним менеджером очередей (в противном случае используйте имя, заданное для подключения ко второму менеджеру очередей).
С помощью команд MQSC. Исполните следующие команды MQSC в отношении менеджера очередей host1/echo.hub:DEFINE CHL('client.channel1') CHLTYPE(CLNTCONN) + QMNAME('echo.hub')
CONNAME('host1.example.com(9001)')
DEFINE CHL('client.channel2') CHLTYPE(CLNTCONN) + QMNAME('echo.hub')
CONNAME('host1.example.com(9001)')
Атрибут "имя подключения" ( CONNAME ) во втором определении может содержать имя подключения к другому менеджеру очередей, представленного объектом канала серверного подключения client.channel2.
Ниже предполагается, что клиентское приложение работает на той же машине, что и менеджер очередей host1/echo.hub. В противном случае скопируйте CCDT на эту машину и отредактируйте переменные окружения, прописав в них локальные пути по отношению к клиентским приложениям.Чтобы указать клиентскому MCA, используемому программами-примерами WebSphere MQ, расположение CCDT, определите следующие переменные окружения.
В Windows:set MQSERVER=
set "MQCHLLIB=C:\Program Files\IBM\WebSphere MQ\Qmgrs\host1echo!hub\@ipcc"
set MQCHLTAB=AMQCLCHL.TAB
В UNIX:unset MQSERVER
MQCHLLIB='/var/mqm/qmgrs/host1echo!hub/@ipcc'
MQCHLTAB=AMQCLCHL.TAB
export MQCHLLIB
export MQCHLTAB
Запустите программу-пример amqsputc для менеджера очередей host1/echo.hub:amqsputc queue1 *echo.hub
Примечание Символ "звездочка" (*) указывает, что приложению не требуется подключение к определенному менеджеру очередей. При этом используются любые записи CCDT, у которых атрибут "имя менеджера очередей" равен " echo.hub ".
Оставьте программу amqsputc подключенной к менеджеру очередей в ожидании ввода.
Отобразите имя используемого канала (если используется два менеджера очередей, выполните эти действия для каждого менеджера).С помощью WebSphere MQ Explorer.Выберите папку Channels (в менеджере очередей host1/echo.hub ). Обратите внимание, что объекты каналов серверных подключений client.channel1 и client.channel2 находятся в состоянии running ("работает").
Примечание Чтобы получить дополнительные сведения о подключении, щелкните правой кнопкой менеджер очередей host1/echo.hub в окне навигатора, выберите Application Connections, а затем щелкните нужное подключение.
С помощью MQSC.Выполните следующую команду MQSC; заметьте, что для одного из объектов канала серверного подключения поле STATUS имеет значение RUNNING:
DIS CHSTATUS('client.*')
Передайте пустую строку программе amqsputc, чтобы завершить ее.
Отключите канал серверного подключения.В WebSphere MQ ExplorerВыберите папку Channels (для host1/echo.hub ). Щелкните правой кнопкой канал и выберите Stop ; убедитесь, что в поле New State указано значение Stopped.
С помощью команд MQSC.Выполните следующую команду в отношении менеджера очередей host1/echo.hub, указав имя работающего канала:
STOP CHANNEL('client.channel1') STATUS(STOPPED)
Снова запустите программу amqsputc. Обратите внимание, что она работает, хотя ранее использованный канал теперь недоступен, поскольку используется вторая запись CCDT (которая может соответствовать другому менеджеру очередей, как сказано выше).
10.2.5. Удаленное администрирование менеджера очередей
Ниже рассказывается о применении WebSphere MQ Explorer для удаленного администрирования менеджеров очередей с использованием клиентских подключений. В этом примере предполагается, что менеджер очередей работает на одном компьютере с WebSphere MQ Explorer. Однако WebSphere MQ Explorer также поддерживает администрирование менеджеров очередей на нескольких удаленных компьютерах, в том числе на разных платформах. Кроме того, WebSphere MQ Explorer также позволяет администрировать менеджеры очередей в WebSphere MQ для z/OS V6.0.
Примечание Для удаленного администрирования менеджеров очередей с помощью WebSphere MQ Explorer требуется:объект-слушатель, привязанный к известному порту;
объект канала серверного подключения с известным именем;
работающий командный сервер;
модельная очередь SYSTEM.MQEXPLORER.REPLY.MODEL.
В Windows и UNIX менеджеры очередей, созданные при помощи WebSphere MQ V6.0, по умолчанию имеют работающий командный сервер и нужную модельную очередь. Однако менеджеры очередей в WebSphere MQ версии 5.3 и ниже требуют ручной настройки этих компонентов; то же верно для менеджеров, созданных в WebSphere MQ V5.3 и обновленных до WebSphere MQ V6.0. Чтобы вручную подготовить нужные компоненты, выполните следующие действия.
Выполните следующую команду WebSphere MQ, чтобы вручную запустить командный сервер для менеджера очередей:strmqcsv имя_менеджера_очередей
Определите нужную модельную очередь следующей командой MQSC:DEFINE QMODEL('SYSTEM.MQEXPLORER.REPLY.MODEL') DEFTYPE(TEMPDYN)
Далее выполните следующие действия.
Щелкните правой кнопкой папку ).
(рис 10.1) Окно Show/Hide Queue Managers в WebSphere MQ Explorer
В окне Show/Hide Queue Managers щелкните Add – запустится мастер Add Queue Manager, позволяющий настроить способ подключения WebSphere MQ Explorer к менеджеру очередей. В этом примере подключение будет выполнено, как описано в разделе 10.2.3.
На первой странице мастера введите имя менеджера очередей в поле Queue manager name, например host1/echo.hub.
Установите параметр Connect directly.
Щелкните Next.
Введите хост-имя или IP-адрес компьютера, на котором работает менеджер очередей host1/echo.hub. В этом примере используется хост-имя host1.example.com, для локального компьютера можно использовать имя localhost.
Укажите порт, к которому привязан слушатель заданного менеджера очередей, например 9001.
Укажите имя объекта канала серверного подключения, объявленного для менеджера очередей (в этом примере – all.clients ).
Щелкните показан пример вводимой информации.
(рис 10.2) Запуск мастера Add Queue Manager для прямого подключения к менеджеру очередейВ результате выбранный менеджер очередей будет добавлен к таблице Shown Queue Managers в окне Show/Hide Queue Managers.
Щелкните Close в окне Show/Hide Queue Managers.
Заметьте, что теперь этот менеджер очередей доступен в папке ).
(рис 10.3) Удаленное администрирование менеджера очередей в WebSphere MQ Explorer
10.2.6. Пример публикации-подписки для JMS, использующий клиентское подключение
Чтобы настроить пример, иллюстрирующий публикацию-подписку в JMS (см. 9.5) для использования клиентского подключения к менеджеру очередей, достаточно изменить объекты в каталоге так, чтобы к ним можно было обращаться через JNDI. Ни исходный текст, ни способ вызова примера модификации не требует.
Ниже описано, как настроить объекты в каталоге для доступа через JNDI, чтобы программа-пример для JMS смогла подключаться к менеджеру очередей как клиент.
Выполните следующие действия.
Настройте текущее окно командной строки или терминальный сеанс, как описано в разделе 9.5.1.
Настройте слушатель для менеджера очередей host1/jmspubsub, привязав его к порту 9010 (см. раздел 10.2.1).
Объявите объект канала серверного подключения с именем jms.clients для менеджера host1/jmspubsub.
Запустите утилиту WebSphere MQ JMS Administration tool (см. раздел 9.5.6).
Объявите в TCF клиентское подключение для удаленного менеджера очередей (ранее TCF использовался для подключения к локальному менеджеру очередей). Для этого выполните следующую команду в WebSphere MQ JMS Administration tool (вводите команду как одну строку):ALTER TCF(PubSub.TCF) HOSTNAME(host1.example.com) PORT(9010)
TRANSPORT(CLIENT) CHANNEL(jms.clients)
Завершите WebSphere MQ JMS Administration tool с помощью команды END.
Запустите программу-пример (не изменяя код и не компилируя ее заново) как издатель (см. 9.5.11), затем как подписчик (см. 9.5.10).
10.3. Построение центрально-лучевой инфраструктуры
В этом разделе рассказывается, как сделать менеджер очередей host1/echo.hub центральным элементом такой инфраструктуры, как создать периферийные менеджеры очередей ("лучи") и вручную настроить взаимодействие между менеджерами, представляющими "центр" и "лучи" инфраструктуры.
В результате все периферийные менеджеры очередей получат доступ к службе echo, работающей в менеджере host1/echo.hub.
10.3.1. Создание очереди недоставленных сообщений для центрального менеджера
Ниже рассказывается, как создать очередь недоставленных, сообщений (dead letter queue) для менеджера очередей host1/echo.hub, чтобы не потерять неверно адресованные непостоянные сообщения. Без этой предосторожности найти сообщения, циркулирующие в инфраструктуре, с использованием каналов бывает очень сложно. Данная задача решается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Queues для менеджера очередей host1/echo.hub и выберите New\Local Queue.
Введите dead.letters в поле Name.
Щелкните Finish.
Щелкните правой кнопкой значок менеджера очередей host1/echo.hub и выберите Properties.
Перейдите в секцию Extended окна свойств.
Введите dead.letters в поле Dead letter queue.
Щелкните OK.
Применение команд MQSC
Выполните следующие действия.
Выполните следующую команду MQSC в отношении менеджера очередей host1/echo.hub, чтобы создать объект локальной очереди:DEFINE QLOCAL('dead.letters')
Выполните следующую команду MQSC в отношении менеджера очередей host1/echo.hub, чтобы настроить его объект для использования ранее созданной очереди недоставленных сообщений:ALTER QMGR DEADQ('dead.letters')
Примечание Проследите, чтобы значение атрибута DEADQ в точности соответствовало имени только что созданного объекта локальной очереди.
10.3.2. Создание объекта receiver-канала для центрального менеджера очередей
Ниже рассказывается, как объявить для центрального менеджера очередей объект канала, обеспечивающий связь с периферийными менеджерами очередей центральнолучевой инфраструктуры (в этом примере используется единственный объект receiver-канала). Ниже описано, как настроить связь между центральным и каждым из периферийных менеджеров очередей.
Это делается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Channels менеджера очередей host1/echo.hub и выберите New\Receiver Channel.
Введите to.host1/echo.hub в поле Name.
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей host1/echo.hub:DEFINE CHANNEL('to.host1/echo.hub') CHLTYPE(RCVR)
Проверьте атрибуты канала, выполнив следующую команду MQSC:DISPLAY CHANNEL('to.host1/echo.hub')
10.3.3. Создание и запуск периферийного менеджера очередей со слушателем
Рекомендуется выполнить приведенные ниже инструкции хотя бы один раз, чтобы освоить создание периферийных менеджеров очередей. В дальнейшем при необходимости можно создавать дополнительные периферийные менеджеры, повторяя эти действия с использованием других менеджеров и имен подключений.
Сначала создайте и запустите новый менеджер очередей (предполагается, что имя менеджера очередей, созданного первым, будет host2/spoke ).
Для новых менеджеров можно увеличить число в имени host2 либо заменять его именами компьютеров (если вы используете несколько разных компьютеров).
Чтобы различать компьютеры, на которых работают центральный и периферийные менеджеры очередей, ниже используется хост-имя namehost2.example.com.
Его следует заменить хост-именем либо IP-адресом реального компьютера. Как и в предыдущих примерах, все менеджеры очередей могут работать на одном компьютере. В этом случае замените host2.example.com IP-адресом либо хост-именем локального компьютера либо на localhost.
Для каждого из менеджеров очередей необходимо определить слушатель. Если предполагается использовать на одном компьютере несколько менеджеров очередей, рекомендуется назначать им номера портов, связанные с их именами. Так, слушатель первого из периферийных менеджеров очередей следует привязать к порту 9002.
Для каждого следующего менеджера увеличивайте номер порта на единицу во избежание путаницы.
Примечание Слушателям менеджеров очередей, работающих на разных компьютерах, можно назначать одинаковые порты. Для менеджеров, работающих на одном и том же компьютере, необходимо использовать разные порты.
Также рекомендуется создать для каждого из периферийных менеджеров очередь недоставленных сообщений (см. 10.3.1; имя " host1/echo.hub " следует заменить именами периферийных менеджеров очередей).
10.3.4. Создание транспортной очереди для периферийного менеджера очередей
Транспортная очередь (transmission queue) играет роль временного хранилища сообщений, предназначенных для передачи другому менеджеру очередей в составе инфраструктуры. Однако сама по себе транспортная очередь не передает сообщения другому менеджеру. Это просто объект локальной очереди, назначенный для использования в этой роли.
Для работы с транспортными очередями применяют WebSphere MQ Explorer и команды MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Queues менеджера очередей host2/spoke и выберите New\Local Queue.
Введите host1/echo.hub в поле Name.
Щелкните Next.
Выберите значение Transmission в поле Usage.
В поле Description введите следующий текст:Transmission queue for messages to host1/echo.hub
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей host2/spoke:
DEFINE QLOCAL('host1/echo.hub') USAGE(XMITQ) + DESCR('Transmission queue for
messages to host1/echo.hub')
Примечание Следите за правильностью регистра имени менеджера очередей; кроме того, имя должно заключаться в одинарные кавычки.
10.3.5. Создание объекта sender-канала для периферийного менеджера очередей
Объект sender-канала позволяет установить связь между двумя менеджерами очередей в инфраструктуре. Имя объекта sender-канала должно соответствовать имени объекта удаленного канала совместимого типа, объявленного в менеджере очередей, являющемся получателем сообщений. Объект канала получателя уже объявлен в центральном менеджере очередей; все периферийные менеджеры очередей используют этот объект для подключения к центральному менеджеру очередей.
Канал принимает сообщения от транспортной очереди менеджера и передает их удаленному менеджеру очередей. Создать канал можно с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Channels в менеджере очередей host2/spoke и выберите New\Sender Channel.
Введите to.host1/echo.hub в поле Name.
Щелкните Next.
Объект sender-канала используется для создания каналов связи с центральным менеджером, поэтому полю Connection name присваивают следующее значение:host1.example.com(9001)
Введите host1/echo.hub в поле Transmission queue.
Щелкните Finish.
Применение команд MQSC
Выполните следующие действия.
Выполните следующую команду MQSC в отношении менеджера очередей host2/spoke:DEFINE CHANNEL('to.host1/echo.hub') CHLTYPE(SDR) +
CONNAME('host1.example.com(9001)') XMITQ('host1/echo.hub')
Проверьте атрибуты канала при помощи следующей команды MQSC:DISPLAY CHANNEL('to.host1/echo.hub')
10.3.6. Проверка канала с помощью команды ping WebSphere MQ
Ниже рассказывается, как с помощью команды WebSphere MQ ping проверить связь через канал. Однако, при этой проверке сообщения через канал не передаются. Для этой цели используются WebSphere MQ Explorer или команды MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Выберите папку Channels менеджера очередей host2/spoke.
Щелкните правой кнопкой элемент to.host1/echo.hub и выберите команду Ping.
Откроется окно с результатами.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей host2/spoke:
PING CHANNEL('to.host1/echo.hub')
Примечание Если команда ping вернет ошибку, проверьте следующее:в объекте sender-канала указано верное хост-имя или IP-адрес, а также номер порта для менеджера очередей host1/echo.hub ;
имя объекта sender-канала соответствует имени объекта receiver-канала, объявленного в host1/echo.hub, вплоть до регистра символов;
у менеджера очередей host1/echo.hub имеется активный слушатель.
10.3.7. Настройка и активация канала связи с центральным менеджером очередей
Ниже рассказывается, как автоматически стартовать канал связи между периферийным и центральным менеджерами очередей с помощью инициатора каналов WebSphere MQ при поступлении сообщения в транспортную очередь. Это делается с использованием WebSphere MQ Explorer и команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Выберите папку Queues в менеджере очередей host2/spoke.
Щелкните правой кнопкой очередь host1/echo.hub и выберите Properties.
Перейдите в секцию Triggering окна свойств очереди.
В поле Trigger control установите значение On.
В поле Trigger type введите First.
Введите to.host1/echo.hub в поле Trigger data.
Введите SYSTEM.CHANNEL.INITQ в поле, которое содержит имя очереди инициации.
Щелкните OK.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей host2/spoke:
ALTER QLOCAL('host1/echo.hub') TRIGGER TRIGTYPE(FIRST) + TRIGDATA('to.host1/
echo.hub') INITQ('SYSTEM.CHANNEL.INITQ')
Примечание Для успешной активации канала важен правильный синтаксис атрибутов.
10.3.8. Отправка тестового сообщения по каналу центральному менеджеру очередей
Ниже рассказывается, как отправить по каналу тестовое сообщение центральному менеджеру очередей. В этом примере очередь-получатель сообщения будет задана вручную в менеджере host1/echo.hub, и локально задавать дополнительные сведения о получателе не потребуется. Локальный менеджер очередей может связаться с менеджером host1/echo.hub благодаря наличию транспортной очереди с соответствующим именем. Этот механизм позволяет отправлять ответы через инфраструктуру WebSphere MQ заданным очередям, обслуживаемым заданным менеджером очередей.
Выполните следующую команду WebSphere MQ и введите текст сообщений, предназначенных для отправки очереди, обслуживаемой центральным менеджером:amqsput queue1 host2/spoke 8208 0 host1/echo.hub
Эту команду вызывают со следующими параметрами:queue1 – имя очереди в host1/echo.hub ;
host2/spoke – имя менеджера очередей, к которому требуется подключиться;
8208 – десятичный код параметров запроса, передаваемый при вызове MQOPEN (для данного примера этот параметр не важен, он требует открыть очередь для добавления сообщений и приводит к неудаче последующие попытки добавления сообщений если менеджер очередей находится в процессе остановки);
0 – отсутствие параметров при вызове MQCLOSE (для данного примера этот параметр не важен);
host1/echo.hub – имя менеджера очередей, заданного при вызове MQOPEN. Представляет менеджер очередей, который используется в этом примере. Видно, что его значение соответствует именам удаленного менеджера очередей и транспортной очереди, применяемой менеджером host2/spoke для отправки сообщений.
Периферийный менеджер очередей помещает сообщение в транспортную очередь. В результате инициатору канала менеджера очередей передается триггерное сообщение через SYSTEM.CHANNEL.INITQ. Канал стартует и начинает передачу сообщений удаленному менеджеру очередей. Удаленный MCA, созданный на основе объекта receiver-канала в host1/echo.hub, передает сообщения заданной очереди менеджера-получателя сообщений.
Примечание Для заданной очереди-получателя в центральном менеджере очередей должен быть объявлен объект локальной очереди. Если не удается найти сообщения в транспортной очереди периферийного менеджера либо в удаленной очереди назначения, проверьте очередь недоставленных сообщений dead.letters центрального менеджера. WebSphere MQ Explorer отображает заголовки любых сообщений, попавших в эту очередь.На стороне отправителя для просмотра состояния канала в WebSphere MQ Explorer используется столбец Status таблицы Channels либо следующая команда MQSC:
DISPLAY CHSTATUS('to.host1/echo.hub')
Чтобы вручную запустить канал на стороне отправителя, щелкните канал правой кнопкой и выберите Start. Это также можно сделать, исполнив следующую команду MQSC:START CHANNEL('to.host1/echo.hub')
Чтобы остановить канал, не блокируя его (то есть не препятствуя дальнейшему запуску инициатором канала), выберите пункт Inactive в раскрывающемся списке New State (так можно остановить канал в WebSphere MQ Explorer). Эту операцию также можно выполнить при помощи следующей команды MQSC:STOP CHANNEL('to.host1/echo.hub') MODE(INACTIVE)
10.3.9. Создание объекта receiver-канала для периферийного менеджера очередей
Вышеописанные действия позволят установить связь между периферийным и центральным менеджерами очередей. Созданный канал будет использоваться в дальнейшем для отправки запросов службе, функционирующей в составе менеджера очередей. Однако для маршрутизации ответов службы к запрашивающему приложению необходимо установить связь между центральным и каждым из периферийных менеджеров очередей.
Ниже рассказывается, как объявить объект receiver-канала, который будет использоваться центральным менеджером очередей для подключения к периферийному менеджеру. Это делается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Channels менеджера очередей host2/spoke и выберите New\Receiver Channel.
Введите to.host2/spoke в поле Name.
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей host2/spoke:
DEFINE CHANNEL('to.host2/spoke') CHLTYPE(RCVR)
10.3.10. Создание транспортной очереди для центрального менеджера очередей
Ниже описано создание транспортной очереди для центрального менеджера очередей host1/echo.hub, обеспечивающей временное хранилище для сообщений, предназначенных для отправки периферийным менеджерам очередей. Кроме того, здесь рассказывается, как настроить триггер, запускающий канал (о создании объекта sender-канала см. ниже). Это делается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Queues менеджера очередей host1/echo.hub и выберите New\Local Queue.
Введите host2/spoke в поле Name.
Щелкните Next.
Выберите пункт Transmission в поле Usage.
Введите в поле Description следующий текст:Transmission queue for messages to host2/spoke
Перейдите в секцию Triggering.
Установите для поля Trigger значение On.
Убедитесь, что поле Trigger type содержит значение First.
Введите to.host2/spoke в поле Trigger data. Этот канал будет объявлен ниже.
Введите SYSTEM.CHANNEL.INITQ в поле Initiation queue.
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей host1/echo.hub:
DEFINE QLOCAL('host2/spoke') USAGE(XMITQ) + TRIGGER TRIGTYPE(FIRST) +
TRIGDATA('to.host2/spoke') INITQ('SYSTEM.CHANNEL.INITQ') + DESCR('Transmission
queue for messages to host2/spoke')
10.3.11. Создание объекта sender-канала для центрального менеджера очередей
Ниже описано создание объекта sender-канала, применяемого для подключения к периферийному менеджеру очередей.
Это делается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Channels менеджера очередей host1/echo.hub и выберите New\Sender Channel.
Введите to.host2/spoke в поле Name.
Щелкните Next.
Объект sender-канала будет использован для того, чтобы установить связь с периферийным менеджером очередей, поэтому для поля Connection задают следующее значение:host2.example.com(9002)
Введите host2/spoke в поле Transmission queue.
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей host1/echo.hub:
DEFINE CHANNEL('to.host2/spoke') CHLTYPE(SDR) + CONNAME('host1.example.
com(9002)') XMITQ('host2/spoke')
Примечание На данном этапе рекомендуется проверить командой ping канал со стороны отправителя на менеджере host1/echo.hub, чтобы убедиться в его способности передавать сообщения. Для отправки сообщений через канал необходимо создать тестовую очередь в периферийном менеджере очередей, которому будут направляться сообщения. Соответствующие команды обсуждаются в разделе 10.3.8. Измените параметры команды, показанной в этом разделе, следующим образом:amqsput queue1 host1/echo.hub 8208 0 host2/spoke
10.3.12. Локальное определение удаленной очереди
К данному моменту должна быть установлена двусторонняя связь между центральным и периферийным менеджерами очередей. Вы также освоили отправку сообщений, явно адресованных очереди-получателю.
Однако, запрашивая обслуживание, приложения не должны явно указывать имя менеджера очередей, иначе будет невозможно изменять инфраструктуру без модификации самих приложений.
Ниже рассказывается, как создать для периферийного менеджера локальное определение очереди, обслуживаемой удаленным (центральным) менеджером очередей. Это делается с использованием объекта удаленной очереди. Наличие локального определения объекта удаленной очереди позволяет приложениям указывать при отправке сообщений лишь имя очереди. Далее инфраструктура (а не приложение) самостоятельно определяет маршрут сообщения.
Примечание Объекты удаленных очередей применяются для разных целей; в частности, их часто используют в центрально-лучевой инфраструктуре, в которой каналы, связывающие менеджеры очередей, определяются вручную.
Это делается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Queues менеджера host2/spoke и выберите New\Remote Queue Definition.
Введите echo в поле Name.
Щелкните Next.
Введите в поле Description следующий текст:Local definition for routing requests for the echo service
Введите echo в поле Remote queue. Это поле позволяет задать локальное имя для объекта локальной очереди, расположенной на удаленном менеджере. В этом примере используются идентичные имена.
Введите host1/echo.hub в поле Remote queue manager.
Оставьте поле Transmission queue пустым, поскольку имя транспортной очереди идентично имени удаленного менеджера очередей.
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду в отношении менеджера очередей host2/spoke:
DEFINE QREMOTE('echo') RNAME('echo') RQMNAME('host1/echo.hub') + DESCR('Local
definition for routing requests for the echo service')
10.3.13. Определение очереди ответов для периферийного менеджера очередей
Поскольку приложение может получать сообщения только из очередей, обслуживаемых менеджером очередей, к которому оно подключено, каждому из периферийных менеджеров, запрашивающих обслуживание, необходима очередь, которая будет принимать ответы.
Ниже рассказывается, как создать модельную очередь для динамической генерации очереди ответов при поступлении запросов. Для этого применяют WebSphere MQ Explorer и команды MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Queues для host2/spoke и выберите New\Model Queue.
Введите echo.replies в поле Name.
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей host2/spoke:
DEFINE QMODEL('echo.replies')
10.3.14. Запрос службы echo с периферийного менеджера очередей
Ниже описана процедура отправки запроса приложением, подключенным к периферийному менеджеру очередей; этот запрос будет обработан центральным менеджером очередей.
Примечание Здесь предполагается, что менеджер очередей host1/echo.hub по-прежнему настроен для предоставления доступа к работающей в нем службе. Также важно наличие у очереди инициации echo.initq активного триггерного монитора. Желательно также, чтобы службу могли запрашивать и локальные приложения, подключенные к менеджеру host1/echo.hub (см. раздел 9.4.10).
Выполните следующую команду WebSphere MQ:amqsreq echo host2/spoke echo.replies
Эта команда содержит следующие параметры:echo – имя очереди, разрешаемое локальным менеджером очередей. Благодаря наличию локального определения удаленной очереди сообщения, адресованные echo, маршрутизируются менеджеру host1/echo.hub через транспортную очередь и пару открытых каналов (sender- и receiver-каналы);
host2/spoke – имя локального периферийного менеджера очередей, к которому подключается приложение;
echo.replies – имя модельной очереди, открытой для динамического создания очереди ответов для приложения.
Примечание В команде amqsreq не указано имя менеджера очередей host1/echo.hub, предоставляющего доступ к службе. Инфраструктура сконфигурирована для автоматической маршрутизации запросов, осуществляемой незаметно для запрашивающего приложения.
Введите сообщение и нажмите Enter.
Не вводя сообщения, нажмите Enter.
Подождите 10 секунд.
Если все прошло нормально, вывод команды будет содержать введенное ранее сообщение:response <текст_тестового_сообщения>
Примечание Если вы столкнетесь с трудностями, обратитесь к разделу 9.4.10.
10.4. Создание кластеров менеджеров очередей
Как было показано в предыдущем разделе, объединение нескольких менеджеров очередей в составе центрально-лучевой инфраструктуры требует решения ряда административных задач.
В этом разделе рассказывается о том, как применение кластеров позволяет снизить нагрузку на администраторов по добавлению менеджеров очередей к инфраструктуре WebSphere MQ. Это возможно благодаря тому, что каждый менеджер очередей в составе кластера автоматически получает сведения и объединяется каналами связи с остальными менеджерами кластера.
В этом разделе используется кластер-пример с именем example.cluster.
10.4.1. Создание менеджеров очередей
Создайте четыре менеджера с активными слушателями.
Имена менеджеров очередей отражают их роли в составе кластера (см. табл. 10.1, в которой перечислены имена менеджеров очередей и порты, к которым привязаны их слушатели).
Менеджеры очередей в составе кластера example.cluster
| Имя |
Хост-имя |
Порт слушателя |
Репозиторий |
Имя канала |
| host1/full |
host1.example.com |
9031 |
Полный |
clus.host1/full |
| host1/partial |
host1.example.com |
9032 |
Частичный |
clus.host1/partial |
| host2/full |
host2.example.com |
9033 |
Полный |
clus.host2/full |
| host2/partial |
host2.example.com |
9034 |
Частичный |
clus.host2/partial |
Два из этих менеджеров обслуживают полные репозитории для кластера, которые содержат всю информацию о кластере, а остальные два – частичные, содержащие лишь необходимые им сведения.
Судя по примерам хост-имен в табл. 10.1, эта конфигурация подходит для двух компьютеров. Впрочем, любое из этих имен можно заменить хост-именем или IP-адресом локальной машины.
Примечание Мы не рекомендуем использовать имя localhost или IP-адрес 127.0.0.1 в рабочих кластерах. Впрочем, для данного примера это имя и адрес подходят, если все менеджеры очередей работают на одном компьютере.В кластерах объект receiver-канала, публикуемый менеджером очередей, рассылается менеджерам кластера. Поэтому имя подключения, указанное в его определении, должно быть доступно с любой из машин, на которых работают менеджеры очередей кластера.
10.4.2. Назначение менеджеров очередей с полными репозиториями
Эти действия выполняются в отношении менеджеров очередей host1/full и host2/full.
Данные менеджеры очередей будут настроены так, что в них будут полные репозитории для кластера example.cluster.
Эти действия выполняются с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой значок менеджера очередей в окне навигатора и выберите Properties.
Перейдите в секцию Repository окна свойств менеджера очередей.
Выберите Full repository for a cluster.
Введите example.cluster в поле, которое станет доступным.
Щелкните OK.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей:
ALTER QMGR REPOS('example.cluster')
10.4.3. Создание объектов кластерных receiver-каналов
Описанные ниже действия выполняются над всеми менеджерами очередей кластера.
Объект кластерного receiver-канала, принадлежащий менеджеру очередей из кластера, определяет, как остальные менеджеры из этого кластера будут подключаться к данному менеджеру очередей.
В силу этих причин атрибут "подключение" данного объекта определяет хост-имя или IP-адрес, а также порт, которые должны использовать другие менеджеры очередей для подключения к данному менеджеру. Менеджер очередей может входить в состав нескольких кластеров, поэтому менеджеры очередей из разных кластеров будут подключаться к этому менеджеру, используя разные атрибуты. Для этого объект кластерного receiver-канала настраивают для привязки к кластеру с заданным именем.
Это делается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Channels данного менеджера очередей и выберите New\Cluster-receiver Channel.
Введите " clus.", затем имя менеджера очередей в поле Name. Например, для менеджера host1/full следует ввести:clus.host1/full
Щелкните Next.
Введите имя подключения, которое использует данный менеджер очередей, в поле Connection. Например, для менеджера очередей host1/full введитеhost1.example.com(9031)
Примечание Проследите, чтобы для менеджера очередей, которым управляют в данном примере, были указаны верные имена канала, подключения и номер порта.
Выберите секцию Cluster.
Выберите Shared in cluster.
Введите example.cluster в поле, которое станет доступным.
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей, который используется в данном примере. При этом замените имя host1/full именем этого менеджера, а имя host1.example.com(9031) – именем подключения, которое используется данным менеджером очередей:
DEFINE CHANNEL('clus.host1/full') CHLTYPE(CLUSRCVR) + CONNAME('host1.example.
com(9031)') CLUSTER('example.cluster')
Примечание Проследите, чтобы для менеджера очередей, которым управляют в данном примере, были указаны верные имена канала, подключения и номер порта.
10.4.4. Создание объектов кластерных sender-каналов
Описанные действия выполняются сначала над менеджерами очередей, содержащими полные репозитории данных кластера ( host1/full и host2/full ), а затем над менеджерами очередей, содержащими частичные репозитории ( host1/partial и host2/partial ).
Чтобы войти в кластер, менеджер очередей должен опубликовать определение своего объекта receiver-канала в одном из полных репозиториев кластера. Этот менеджер очередей разделяет данные с остальными полными репозиториями кластера. Чтобы впервые обратиться к полному репозиторию, менеджеру очередей требуются сведения, необходимые для установки соединения. Они предоставляются в виде единственного объекта кластерного sender-канала, объявленного вручную.
Объекту кластерного sender-канала, назначенному для частичного репозитория, можно сопоставить произвольный полный репозиторий. Однако в данном примере с двумя менеджерами очередей, содержащими полные репозитории, объект кластерного sender-канала должен быть сопоставлен полному репозиторию другого менеджера очередей.
Имя объекта кластерного sender-канала должно соответствовать имени объекта кластерного receiver-канала, объявленного для удаленного полного репозитория. Это необходимо, чтобы менеджеры очередей кластера могли получать сведения, необходимые для подключения.
Это делается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Channels менеджера очередей и выберите New -> Cluster-sender Channel.
Введите в поле Name " clus.", затем имя менеджера очередей, содержащего полный репозиторий (доступ к которому нужно получить для подключения к кластеру). Например, для менеджера очередей host1/full следует ввести " clus." и " host2/full ":clus.host2/full
Щелкните Next.
Введите в поле Connection имя подключения, используемого менеджером очередей, с которым нужно связаться для подключения к кластеру. Так, для менеджера очередей host1/full следует ввести:host2.example.com(9033)
Примечание Проследите, чтобы были верно указаны имя подключения и номер порта, используемые менеджером очередей с полным репозиторием, которому соответствует имя канала.
Перейдите в секцию Cluster.
Выберите Shared in cluster.
Введите example.cluster в поле, которое станет доступным.
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду MQSC в отношении данного менеджера очередей, заменив host2/full именем менеджера очередей с полным репозиторием, к которому нужно получить доступ для подключения к кластеру, а имя host2.example.com(9033) – именем подключения, используемого этим менеджером очередей:
DEFINE CHANNEL('clus.host2/full') CHLTYPE(CLUSSDR) + CONNAME('host2.example.
com(9033)') CLUSTER('example.cluster')
Примечание Проследите, чтобы были верно указаны имя подключения и номер порта, используемые менеджером очередей с полным репозиторием, которому соответствует имя канала.
10.4.5. Просмотр сведений о кластере
В результате выполнения вышеописанных действий создан кластер из четырех менеджеров очередей. Просмотр сведений о кластере с помощью WebSphere MQ Explorer и команд MQSC описан в разделе 8.2.
Если один из менеджеров очередей с полным репозиторием (работающий на локальной или удаленной машине) отображается в WebSphere MQ Explorer, структуру кластера можно увидеть в папке Queue Manager Clusters.
Примечание Сразу после создания частичный репозиторий содержит сведения только о нем самом и о полных репозиториях кластера. Дело в том, что у частичного репозитория пока не было причин для запроса информации о других частичных репозиториях кластера из полных репозиториев.
На рис 10.4 показана структура кластера в папке Queue Manager Clusters, отображаемой в окне WebSphere MQ Explorer.
(рис 10.4) Структура кластера example.cluster, отображаемого в WebSphere MQ Explorer
10.4.6. Предоставление общего доступа к очередям кластера
Описанные в этом разделе действия выполняются над всеми менеджерами очередей кластера.
Ниже рассказывается, как создать в каждом из менеджеров кластера очередь с именем cluster.queue и предоставить к ней общий доступ.
Это делается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Queues менеджера очередей, расположенного в папке Queue Managers навигатора, и выберите New\Local Queue.
Введите cluster.queue в поле Name.
Щелкните Next.
Перейдите в секцию Cluster.
Выберите Shared in cluster.
Введите example.cluster в поле, которое станет доступным.
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду MQSC в отношении данного менеджера очередей:
DEFINE QLOCAL('cluster.queue') CLUSTER('example.cluster')
10.4.7. Активация балансировки нагрузки для локального экземпляра очереди
Описанные в этом разделе действия выполняются над всеми менеджерами очередей в кластере.
По умолчанию сообщения доставляются в локальную очередь (если очередь-адресат существует в менеджере очередей, к которому подключено приложение).
В WebSphere MQ V6.0 это правило можно переопределить, активировав механизм балансировки нагрузки для локального и всех остальных экземпляров общей очереди в кластере.
Это делается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой значок менеджера очередей в папке Queue Managers в окне навигатора и выберите Properties.
Выберите секцию Cluster в окне свойств менеджера очередей.
Измените значение поля CLWL use queue на Any.
Щелкните OK.
Применение команд MQSC
Выполните следующую команду MQSC в отношении данного менеджера очередей:
ALTER QMGR CLWLUSEQ(ANY)
10.4.8. Балансировка нагрузки по обработке сообщений очередями
Следующие действия можно выполнить над любым менеджером очередей в кластере.
Подключитесь к любому менеджеру очередей и добавьте несколько сообщений. Так, в следующем примере добавляется 100 сообщений:Windows:FOR /L %1 IN (1,1,100) DO echo Message%1 | amqsput cluster.queue host1/
partia
UNIX (с оболочкой Bash или Korn):i=0; while [ $i -lt 100 ]; do let i=i+1; echo Message$i | amqsput cluster.
queue host1/partial; done
Обратите внимание на текущую длину очереди. Просмотрите очередь cluster.queue в каждом из менеджеров очередей кластера (см. раздел 9.3.7).Примечание Число сообщений, попавших в разные экземпляры общей очереди кластера, может отличаться.
10.4.9. Предоставление общего доступа к службе echo в кластере
Ниже рассказывается, как ввести менеджер очередей host1/echo.hub в кластер и предоставить всем менеджерам очередей кластера общий доступ к службе echo. Единственная задача администратора в этом случае – ввести в кластер менеджер очередей host1/echo.hub.
Ниже эти действия описаны более подробно (см. также разделы 10.4.3 и 10.4.4).
Выполните следующие действия.
Создайте объект кластерного receiver-канала со следующими параметрами:имя: clus.host1/echo.hub ;
имя подключения (атрибут CONNAME ): host1.example.com(9001) ;
кластер (атрибут CLUSTER ): example.cluster.
Создайте объект кластерного sender-канала:имя: clus.host1/full ;
имя подключения (атрибут CONNAME ): host1.example.com(9031) ;
кластер (атрибут CLUSTER ): example.cluster.
Измените объект локальной очереди echo, чтобы опубликовать его в кластере.С помощью WebSphere MQ Explorer:Выберите папку Queues менеджера очередей host1/echo.hub, расположенную в папке Queue Managers в окне навигатора, и выберите Properties.
Перейдите в секцию Cluster.
Выберите Shared in cluster.
Введите example.cluster в поле, которое станет доступным.
Щелкните OK.
С помощью команд MQSC:ALTER QLOCAL('echo') CLUSTER('example.cluster')
Примечание Не забывайте заключать атрибуты в составе команд MQSC в одинарные кавычки.
10.4.10. Предоставление общего доступа к очереди echo в кластере
Эту операцию можно выполнить путем запроса службы echo, выполнив программу-пример WebSphere MQ amqsreq с любым из менеджеров очередей кластера.
Примечание Предполагается, что менеджер очередей host1/echo.hub настроен для предоставления доступа к работающей в нем службе echo через очередь echo. Кроме того, у очереди инициации echo.initq должен быть активный триггерный монитор. Рекомендуется убедиться, что служба доступна локальным приложениям, подключенным к менеджеру очередей host1/echo.hub, прежде чем переходить к следующим действиям (см. раздел 9.4.10).
Выполните следующие действия.
Объявите модельную очередь или локальную очередь с именем echo.replies с атрибутами по умолчанию в менеджере очередей.
Выполните следующую команду, указав имя этого менеджера очередей как параметр:amqsreq echo host2/partial echo.replies
Введите сообщение и нажмите Enter.
Не вводя текстa, нажмите Enter.
Ожидайте в течение 10 секунд.
Если команды завершатся успешно, выводится текст введенного ранее сообщения:response <текст_тестового_сообщения>
Примечание Если вы столкнулись с трудностями, обратитесь к разделу 9.4.10.
В этой лекции обсуждаются следующие темы:
Настройка окружения
Подключение к менеджеру очередей в режиме клиента
Построение центрально-лучевой инфраструктуры
Создание кластеров менеджеров очередей
10.1. Настройка окружения
Для выполнения упражнений из этой лекции необходимо то же окружение, что было настроено для изучения лекции 9.
Единственное дополнение – TCP/IP-сеть, соединяющая компьютеры, на которых работают приложения и менеджеры очередей.
В этой лекции предполагается, что в сети может быть несколько компьютеров с разными хост-именами и IP-адресами. Впрочем, любое из приведенных ниже упражнений можно выполнить и на изолированной рабочей станции под управлением Windows или Linux, то есть наличие сетевого подключения не обязательно.
Примечание При использовании компьютера, не подключенного к сети, все хост-имена в этой лекции следует заменить идентификатором локального компьютера:localhost
Примеры хост-имен, используемых в этой лекции:host1.example.com
host2.example.com
Кроме того, в этой лекции указаны уникальные номера портов, которые прослушивают менеджеры очередей. Это означает, что данные номера портов можно использовать как на одном компьютере, так и на разных.
10.2. Подключение к менеджеру очередей в режиме клиента
В этом разделе рассказывается, как приложения подключаются к удаленным менеджерам очередей, получая доступ к тем же функциям, что и приложения, подключенные к локальным менеджерам очередей.
Ниже демонстрируется получение доступа к менеджеру очередей и его администрирование на примере менеджера host1/echo.hub, созданного в разделе 9.4. Эти инструкции позволят получить доступ к службе, функционирующей в этом менеджере очередей, через клиентское подключение.
Альтернативный вариант – создание и запуск нового менеджера очередей. В этом случае следует заменить host1/echo.hub именем созданного вами менеджера очередей.
Примечание Вышеописанные действия могут быть выполнены на одном компьютере. В этом случае просто подставьте вместо host1.example.com хост-имя или IP-адрес своего компьютера.Если ваш компьютер не имеет IP-адреса либо его адрес часто меняется, можно использовать универсальное хост-имя локального компьютера – localhost.
10.2.1. Создание и запуск слушателя
Ниже рассказывается, как создать и запустить для менеджера очередей слушатель (listener), предоставляющий возможность идентификации в сети. В WebSphere MQ 6.0 слушатели являются объектами WebSphere MQ, объявленными в менеджере очередей. Эти действия можно выполнить при помощи WebSphere MQ Explorer или команд MQSC.
Примечание Предполагается, что вы работаете с менеджером очередей WebSphere MQ V6.0, в прежних версиях слушатели создавались и запускались независимо от менеджеров очередей.
Слушатель отслеживает некоторый порт в TCP/IP-сети. Порт – фундаментальное понятие TCP/IP-сетей. Существует множество портов, которые могут прослушиваться сетевыми службами, работающими на компьютере. Предполагается, что выбранные для следующих примеров порты не прослушиваются другими службами. В противном случае выберите другой порт и замените им соответствующие номера портов в приведенных ниже примерах.
Если в системе работает единственный менеджер очередей, он обычно прослушивает порт 1414 – стандартный порт WebSphere MQ. В приведенных ниже инструкциях используется произвольный диапазон портов, который вряд ли будет занят другими менеджерами очередей и сетевыми службами.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Listeners в менеджере очередей и выберите New\TCP Listener.Примечание Папка Listeners находится внутри папки Advanced менеджера очередей (см. дерево папок в окне навигатора).Если флажок Create listener configured for TCP/IP на странице Enter listener options (Step 4) мастера Create Queue Manager был помечен, объект-слушатель LISTENER.TCP был создан автоматически.
В этом случае щелкните правой кнопкой объект-слушатель в таблице и выберите Stop. После остановки слушателя щелкните его правой кнопкой, выберите команду Delete и подтвердите удаление.
Введите LISTENER.TCP в поле name.
Щелкните Next.
Введите в поле Description следующий текст:TCP/IP Listener for queue manager
Введите 9001 в поле Port.
Установите для поля Control значение Queue Manager, чтобы слушатель автоматически запускался и останавливался вместе с менеджером очередей.
Щелкните Finish.
Щелкните правой кнопкой строку LISTENER.TCP в таблице и выберите Start – слушатель будет запущен.
Убедитесь, что в столбце Listener status содержится значение Running. В противном случае щелкните кнопку Refresh в правом верхнем углу экрана и снова проверьте состояние слушателя.
Примечание Если в столбце состояния по-прежнему находится значение Stopped, скорее всего, в системе работает другой менеджер очередей, прослушивающий выбранный порт. Проверьте наличие объекта-слушателя LISTENER.TCP в каждом из менеджеров очередей, работающих на компьютере.Менеджеры очередей, работающие на одном компьютере, должны прослушивать разные TCP/IP-порты.
Применение команд MQSC
Выполните следующие действия.
Создайте объект-слушатель, который автоматически запускается и останавливается вместе с менеджером очередей. Для этого выполните следующую команду MQSC в отношении менеджера очередей host1/echo.hub:DEFINE LISTENER('LISTENER.TCP') + TRPTYPE(TCP) PORT(9001) CONTROL(QMGR) +
DESCR('TCP/IP Listener for queue manager')
Запустите слушатель, выполнив следующую команду MQSC:START LISTENER('LISTENER.TCP')
Примечание Если вы используете WebSphere MQ Explorer, отмечайте флажок Create listener configured for TCP/IP на странице Enter listener options (Step 4) мастера Create Queue Manager, чтобы при необходимости автоматически создавать объекты-слушатели вместе с менеджерами очередей.Проверьте, свободен ли выбранный порт, перед щелчком Finish. Порт, к которому привязан объект-слушатель, можно изменить и после создания менеджера очередей. После смены порта непременно перезапустите слушатель.
10.2.2. Создание объекта канала серверного подключения
Объект канала серверного подключения определяет имя и атрибуты канала для клиентских подключений к менеджеру очередей.
Один из ключевых атрибутов, которые можно настроить для объекта канала серверного подключения, – идентификатор локального пользователя, под которым удаленные приложения подключаются через канал, представленный данным объектом (обычно это идентификатор пользователя MCA, MCAUSER).
Это удобно, поскольку приложения, обращающиеся к менеджеру очередей с удаленных машин, могут работать под различными пользовательскими учетными записями (например, если один из них работает на компьютере под управлением UNIX, а другой – на Windows-компьютере). При выполнении приведенных ниже упражнений можно использовать имя, под которым вы входите в систему. Это позволит приложениям, работающим на любом компьютере, обращаться к компьютеру, на котором работает менеджер очередей, с привилегиями администратора WebSphere MQ.
Ниже рассказывается, как создать объект канала серверного подключения с именем all.clients, который будет использоваться в примерах этого раздела для подключения приложений к менеджеру очередей. Это делается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Channels в менеджере host1/echo.hub и выберите New\Server-connection Channel.
Введите all.clients в поле Name.
Щелкните Next.
При желании перейдите в секцию MCA и укажите имя пользователя в поле MCA user ID.
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей host1/echo.hub:
DEFINE CHANNEL('all.clients') CHLTYPE(SVRCONN) MCAUSER('имя_пользователя')
10.2.3. Подключение с использованием переменной кружения MQSERVER
Клиентский канальный агент (message channel agent, MCA), доступный при работе с MQI напрямую (например, из приложений, написанных на С), может быть настроен при помощи переменных окружения. Базовые атрибуты, включая имя канала и подключения, настраиваются при помощи переменной MQSERVER.
Приложения, использующие базовый клиентский MCA , и те, что работают с менеджером очередей напрямую, создают с применением разных наборов библиотек WebSphere MQ. Библиотеки, применяемые в первом случае, обычно называются клиентскими библиотеками WebSphere MQ.
С WebSphere MQ поставляются версии базовых программ-примеров, таких как amqsput, amqsget, amqsbcg, amqsreq и amqsech, скомпилированных с использованием клиентских библиотек WebSphere MQ. Для вызова этих версий добавьте латинскую букву "c" к имени нужного приложения, например: amqsputc, amqsgetc, amqsbcgc, amqsreqc или amqsechc.
Примечание Клиентские MCA, предназначенные для использования с другими API, такими как Java, JMS, .NET и XMS, настраиваются по-другому. Подробнее об этом см. в руководстве WebSphere MQ по тому API, с которым вы работаете.
При подключении к менеджеру очередей в режиме клиента задают имя менеджера (обычно оно совпадает с именем менеджера, к которому требуется подключиться). Если вместо имени ввести звездочку (*), можно подключиться к произвольному менеджеру очередей.
Чтобы добавить или извлечь сообщения из очереди, подключившись к менеджеру очередей как клиент, с использованием переменной окружения MQSERVER и программ-примеров WebSphere MQ, выполните следующие действия.
Определите в локальном менеджере очередей очередь с произвольным именем (в данном примере – queue1 ).
Присвойте переменной окружения MQSERVER следующее значение:в Windows:set MQSERVER=all.clients/TCP/host1.example.com(9001)
в UNIX:MQSERVER=all.clients/TCP/'host1.example.com(9001)' export MQSERVER
Добавьте сообщения в очередь с помощью команды amqsputc:amqsputc queue1 host1/echo.hub
Для просмотра сообщений в очереди воспользуйтесь командой amqsbcgc:amqsbcgc queue1 host1/echo.hub > queue1.txt
Извлеките сообщения из очереди командой amqsgetc:amqsgetc queue1 host1/echo.hub
Для запроса эхо-службы, запускаемой с помощью триггера для очереди host1/echo.hub, выполните следующую команду:amqsreqc echo host1/echo.hub echo.replies.manual
Примечание При возникновении ошибок с кодами 2058 или 2059 проверьте системные журналы ошибок WebSphere MQ и менеджера очередей (см. раздел 5.3.15).
10.2.4. Подключение с использованием объекта канала клиентского подключения
Объекты каналов клиентского подключения в WebSphere MQ предназначены для исчерпывающей настройки атрибутов клиентских MCA.
При определении объекта канала клиентского подключения создается запись в файле, называемом "таблица определений клиентских каналов" (client channel definition table, CCDT), данного менеджера очередей. Он используется клиентами для получения сведений о доступных менеджерах очередей. Этот файл может быть создан любым менеджером очередей, а не только тем, к которому подключается приложение. Далее этот файл может быть скопирован на удаленные машины либо опубликован в сети.
Ниже рассказывается, как сконфигурировать базовые программы-примеры WebSphere MQ с использованием параметров, заданных в CCDT, при подключении к менеджерам очередей.
Выполните следующие действия.
Создайте для менеджера очередей host1/echo.hub два канала серверного подключения (см. раздел 10.2.2) с именами client.channel1 и client.channel2. Альтернативный вариант – определение отдельных каналов у различных менеджеров очередей, слушатели которых привязаны к разным портам одного или различных компьютеров.
Создайте два объекта канала клиентского подключения (оба для менеджера очередей host1/echo.hub ), их имена должны соответствовать именам ранее созданных объектов каналов серверных подключений.В WebSphere MQ Explorer.Щелкните правой кнопкой папку Client Connections для менеджера host1/echo.hub и выберите New\Client-connection Channel.
Введите client.channel1 в поле Name.
Щелкните Next.
Введите echo.hub в поле Queue manager name (здесь преднамеренно вводится имя, отличное от реального имени менеджера очередей).
Введите host1.example.com(9001) в поле Connection name.
Щелкните Finish.
Повторите шаги 1-6, чтобы создать второй объект канала клиентского подключения с именем client.channel2. Атрибуту, задающему имя менеджера очередей, должно быть присвоено значение echo.hub. Имя подключения может быть тем же, если оба объекта канала серверного подключения связаны с одним менеджером очередей (в противном случае используйте имя, заданное для подключения ко второму менеджеру очередей).
С помощью команд MQSC. Исполните следующие команды MQSC в отношении менеджера очередей host1/echo.hub:DEFINE CHL('client.channel1') CHLTYPE(CLNTCONN) + QMNAME('echo.hub')
CONNAME('host1.example.com(9001)')
DEFINE CHL('client.channel2') CHLTYPE(CLNTCONN) + QMNAME('echo.hub')
CONNAME('host1.example.com(9001)')
Атрибут "имя подключения" ( CONNAME ) во втором определении может содержать имя подключения к другому менеджеру очередей, представленного объектом канала серверного подключения client.channel2.
Ниже предполагается, что клиентское приложение работает на той же машине, что и менеджер очередей host1/echo.hub. В противном случае скопируйте CCDT на эту машину и отредактируйте переменные окружения, прописав в них локальные пути по отношению к клиентским приложениям.Чтобы указать клиентскому MCA, используемому программами-примерами WebSphere MQ, расположение CCDT, определите следующие переменные окружения.
В Windows:set MQSERVER=
set "MQCHLLIB=C:\Program Files\IBM\WebSphere MQ\Qmgrs\host1echo!hub\@ipcc"
set MQCHLTAB=AMQCLCHL.TAB
В UNIX:unset MQSERVER
MQCHLLIB='/var/mqm/qmgrs/host1echo!hub/@ipcc'
MQCHLTAB=AMQCLCHL.TAB
export MQCHLLIB
export MQCHLTAB
Запустите программу-пример amqsputc для менеджера очередей host1/echo.hub:amqsputc queue1 *echo.hub
Примечание Символ "звездочка" (*) указывает, что приложению не требуется подключение к определенному менеджеру очередей. При этом используются любые записи CCDT, у которых атрибут "имя менеджера очередей" равен " echo.hub ".
Оставьте программу amqsputc подключенной к менеджеру очередей в ожидании ввода.
Отобразите имя используемого канала (если используется два менеджера очередей, выполните эти действия для каждого менеджера).С помощью WebSphere MQ Explorer.Выберите папку Channels (в менеджере очередей host1/echo.hub ). Обратите внимание, что объекты каналов серверных подключений client.channel1 и client.channel2 находятся в состоянии running ("работает").
Примечание Чтобы получить дополнительные сведения о подключении, щелкните правой кнопкой менеджер очередей host1/echo.hub в окне навигатора, выберите Application Connections, а затем щелкните нужное подключение.
С помощью MQSC.Выполните следующую команду MQSC; заметьте, что для одного из объектов канала серверного подключения поле STATUS имеет значение RUNNING:
DIS CHSTATUS('client.*')
Передайте пустую строку программе amqsputc, чтобы завершить ее.
Отключите канал серверного подключения.В WebSphere MQ ExplorerВыберите папку Channels (для host1/echo.hub ). Щелкните правой кнопкой канал и выберите Stop ; убедитесь, что в поле New State указано значение Stopped.
С помощью команд MQSC.Выполните следующую команду в отношении менеджера очередей host1/echo.hub, указав имя работающего канала:
STOP CHANNEL('client.channel1') STATUS(STOPPED)
Снова запустите программу amqsputc. Обратите внимание, что она работает, хотя ранее использованный канал теперь недоступен, поскольку используется вторая запись CCDT (которая может соответствовать другому менеджеру очередей, как сказано выше).
10.2.5. Удаленное администрирование менеджера очередей
Ниже рассказывается о применении WebSphere MQ Explorer для удаленного администрирования менеджеров очередей с использованием клиентских подключений. В этом примере предполагается, что менеджер очередей работает на одном компьютере с WebSphere MQ Explorer. Однако WebSphere MQ Explorer также поддерживает администрирование менеджеров очередей на нескольких удаленных компьютерах, в том числе на разных платформах. Кроме того, WebSphere MQ Explorer также позволяет администрировать менеджеры очередей в WebSphere MQ для z/OS V6.0.
Примечание Для удаленного администрирования менеджеров очередей с помощью WebSphere MQ Explorer требуется:объект-слушатель, привязанный к известному порту;
объект канала серверного подключения с известным именем;
работающий командный сервер;
модельная очередь SYSTEM.MQEXPLORER.REPLY.MODEL.
В Windows и UNIX менеджеры очередей, созданные при помощи WebSphere MQ V6.0, по умолчанию имеют работающий командный сервер и нужную модельную очередь. Однако менеджеры очередей в WebSphere MQ версии 5.3 и ниже требуют ручной настройки этих компонентов; то же верно для менеджеров, созданных в WebSphere MQ V5.3 и обновленных до WebSphere MQ V6.0. Чтобы вручную подготовить нужные компоненты, выполните следующие действия.
Выполните следующую команду WebSphere MQ, чтобы вручную запустить командный сервер для менеджера очередей:strmqcsv имя_менеджера_очередей
Определите нужную модельную очередь следующей командой MQSC:DEFINE QMODEL('SYSTEM.MQEXPLORER.REPLY.MODEL') DEFTYPE(TEMPDYN)
Далее выполните следующие действия.
Щелкните правой кнопкой папку ).
(рис 10.1) Окно Show/Hide Queue Managers в WebSphere MQ Explorer
В окне Show/Hide Queue Managers щелкните Add – запустится мастер Add Queue Manager, позволяющий настроить способ подключения WebSphere MQ Explorer к менеджеру очередей. В этом примере подключение будет выполнено, как описано в разделе 10.2.3.
На первой странице мастера введите имя менеджера очередей в поле Queue manager name, например host1/echo.hub.
Установите параметр Connect directly.
Щелкните Next.
Введите хост-имя или IP-адрес компьютера, на котором работает менеджер очередей host1/echo.hub. В этом примере используется хост-имя host1.example.com, для локального компьютера можно использовать имя localhost.
Укажите порт, к которому привязан слушатель заданного менеджера очередей, например 9001.
Укажите имя объекта канала серверного подключения, объявленного для менеджера очередей (в этом примере – all.clients ).
Щелкните показан пример вводимой информации.
(рис 10.2) Запуск мастера Add Queue Manager для прямого подключения к менеджеру очередейВ результате выбранный менеджер очередей будет добавлен к таблице Shown Queue Managers в окне Show/Hide Queue Managers.
Щелкните Close в окне Show/Hide Queue Managers.
Заметьте, что теперь этот менеджер очередей доступен в папке ).
(рис 10.3) Удаленное администрирование менеджера очередей в WebSphere MQ Explorer
10.2.6. Пример публикации-подписки для JMS, использующий клиентское подключение
Чтобы настроить пример, иллюстрирующий публикацию-подписку в JMS (см. 9.5) для использования клиентского подключения к менеджеру очередей, достаточно изменить объекты в каталоге так, чтобы к ним можно было обращаться через JNDI. Ни исходный текст, ни способ вызова примера модификации не требует.
Ниже описано, как настроить объекты в каталоге для доступа через JNDI, чтобы программа-пример для JMS смогла подключаться к менеджеру очередей как клиент.
Выполните следующие действия.
Настройте текущее окно командной строки или терминальный сеанс, как описано в разделе 9.5.1.
Настройте слушатель для менеджера очередей host1/jmspubsub, привязав его к порту 9010 (см. раздел 10.2.1).
Объявите объект канала серверного подключения с именем jms.clients для менеджера host1/jmspubsub.
Запустите утилиту WebSphere MQ JMS Administration tool (см. раздел 9.5.6).
Объявите в TCF клиентское подключение для удаленного менеджера очередей (ранее TCF использовался для подключения к локальному менеджеру очередей). Для этого выполните следующую команду в WebSphere MQ JMS Administration tool (вводите команду как одну строку):ALTER TCF(PubSub.TCF) HOSTNAME(host1.example.com) PORT(9010)
TRANSPORT(CLIENT) CHANNEL(jms.clients)
Завершите WebSphere MQ JMS Administration tool с помощью команды END.
Запустите программу-пример (не изменяя код и не компилируя ее заново) как издатель (см. 9.5.11), затем как подписчик (см. 9.5.10).
10.3. Построение центрально-лучевой инфраструктуры
В этом разделе рассказывается, как сделать менеджер очередей host1/echo.hub центральным элементом такой инфраструктуры, как создать периферийные менеджеры очередей ("лучи") и вручную настроить взаимодействие между менеджерами, представляющими "центр" и "лучи" инфраструктуры.
В результате все периферийные менеджеры очередей получат доступ к службе echo, работающей в менеджере host1/echo.hub.
10.3.1. Создание очереди недоставленных сообщений для центрального менеджера
Ниже рассказывается, как создать очередь недоставленных, сообщений (dead letter queue) для менеджера очередей host1/echo.hub, чтобы не потерять неверно адресованные непостоянные сообщения. Без этой предосторожности найти сообщения, циркулирующие в инфраструктуре, с использованием каналов бывает очень сложно. Данная задача решается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Queues для менеджера очередей host1/echo.hub и выберите New\Local Queue.
Введите dead.letters в поле Name.
Щелкните Finish.
Щелкните правой кнопкой значок менеджера очередей host1/echo.hub и выберите Properties.
Перейдите в секцию Extended окна свойств.
Введите dead.letters в поле Dead letter queue.
Щелкните OK.
Применение команд MQSC
Выполните следующие действия.
Выполните следующую команду MQSC в отношении менеджера очередей host1/echo.hub, чтобы создать объект локальной очереди:DEFINE QLOCAL('dead.letters')
Выполните следующую команду MQSC в отношении менеджера очередей host1/echo.hub, чтобы настроить его объект для использования ранее созданной очереди недоставленных сообщений:ALTER QMGR DEADQ('dead.letters')
Примечание Проследите, чтобы значение атрибута DEADQ в точности соответствовало имени только что созданного объекта локальной очереди.
10.3.2. Создание объекта receiver-канала для центрального менеджера очередей
Ниже рассказывается, как объявить для центрального менеджера очередей объект канала, обеспечивающий связь с периферийными менеджерами очередей центральнолучевой инфраструктуры (в этом примере используется единственный объект receiver-канала). Ниже описано, как настроить связь между центральным и каждым из периферийных менеджеров очередей.
Это делается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Channels менеджера очередей host1/echo.hub и выберите New\Receiver Channel.
Введите to.host1/echo.hub в поле Name.
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей host1/echo.hub:DEFINE CHANNEL('to.host1/echo.hub') CHLTYPE(RCVR)
Проверьте атрибуты канала, выполнив следующую команду MQSC:DISPLAY CHANNEL('to.host1/echo.hub')
10.3.3. Создание и запуск периферийного менеджера очередей со слушателем
Рекомендуется выполнить приведенные ниже инструкции хотя бы один раз, чтобы освоить создание периферийных менеджеров очередей. В дальнейшем при необходимости можно создавать дополнительные периферийные менеджеры, повторяя эти действия с использованием других менеджеров и имен подключений.
Сначала создайте и запустите новый менеджер очередей (предполагается, что имя менеджера очередей, созданного первым, будет host2/spoke ).
Для новых менеджеров можно увеличить число в имени host2 либо заменять его именами компьютеров (если вы используете несколько разных компьютеров).
Чтобы различать компьютеры, на которых работают центральный и периферийные менеджеры очередей, ниже используется хост-имя namehost2.example.com.
Его следует заменить хост-именем либо IP-адресом реального компьютера. Как и в предыдущих примерах, все менеджеры очередей могут работать на одном компьютере. В этом случае замените host2.example.com IP-адресом либо хост-именем локального компьютера либо на localhost.
Для каждого из менеджеров очередей необходимо определить слушатель. Если предполагается использовать на одном компьютере несколько менеджеров очередей, рекомендуется назначать им номера портов, связанные с их именами. Так, слушатель первого из периферийных менеджеров очередей следует привязать к порту 9002.
Для каждого следующего менеджера увеличивайте номер порта на единицу во избежание путаницы.
Примечание Слушателям менеджеров очередей, работающих на разных компьютерах, можно назначать одинаковые порты. Для менеджеров, работающих на одном и том же компьютере, необходимо использовать разные порты.
Также рекомендуется создать для каждого из периферийных менеджеров очередь недоставленных сообщений (см. 10.3.1; имя " host1/echo.hub " следует заменить именами периферийных менеджеров очередей).
10.3.4. Создание транспортной очереди для периферийного менеджера очередей
Транспортная очередь (transmission queue) играет роль временного хранилища сообщений, предназначенных для передачи другому менеджеру очередей в составе инфраструктуры. Однако сама по себе транспортная очередь не передает сообщения другому менеджеру. Это просто объект локальной очереди, назначенный для использования в этой роли.
Для работы с транспортными очередями применяют WebSphere MQ Explorer и команды MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Queues менеджера очередей host2/spoke и выберите New\Local Queue.
Введите host1/echo.hub в поле Name.
Щелкните Next.
Выберите значение Transmission в поле Usage.
В поле Description введите следующий текст:Transmission queue for messages to host1/echo.hub
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей host2/spoke:
DEFINE QLOCAL('host1/echo.hub') USAGE(XMITQ) + DESCR('Transmission queue for
messages to host1/echo.hub')
Примечание Следите за правильностью регистра имени менеджера очередей; кроме того, имя должно заключаться в одинарные кавычки.
10.3.5. Создание объекта sender-канала для периферийного менеджера очередей
Объект sender-канала позволяет установить связь между двумя менеджерами очередей в инфраструктуре. Имя объекта sender-канала должно соответствовать имени объекта удаленного канала совместимого типа, объявленного в менеджере очередей, являющемся получателем сообщений. Объект канала получателя уже объявлен в центральном менеджере очередей; все периферийные менеджеры очередей используют этот объект для подключения к центральному менеджеру очередей.
Канал принимает сообщения от транспортной очереди менеджера и передает их удаленному менеджеру очередей. Создать канал можно с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Channels в менеджере очередей host2/spoke и выберите New\Sender Channel.
Введите to.host1/echo.hub в поле Name.
Щелкните Next.
Объект sender-канала используется для создания каналов связи с центральным менеджером, поэтому полю Connection name присваивают следующее значение:host1.example.com(9001)
Введите host1/echo.hub в поле Transmission queue.
Щелкните Finish.
Применение команд MQSC
Выполните следующие действия.
Выполните следующую команду MQSC в отношении менеджера очередей host2/spoke:DEFINE CHANNEL('to.host1/echo.hub') CHLTYPE(SDR) +
CONNAME('host1.example.com(9001)') XMITQ('host1/echo.hub')
Проверьте атрибуты канала при помощи следующей команды MQSC:DISPLAY CHANNEL('to.host1/echo.hub')
10.3.6. Проверка канала с помощью команды ping WebSphere MQ
Ниже рассказывается, как с помощью команды WebSphere MQ ping проверить связь через канал. Однако, при этой проверке сообщения через канал не передаются. Для этой цели используются WebSphere MQ Explorer или команды MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Выберите папку Channels менеджера очередей host2/spoke.
Щелкните правой кнопкой элемент to.host1/echo.hub и выберите команду Ping.
Откроется окно с результатами.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей host2/spoke:
PING CHANNEL('to.host1/echo.hub')
Примечание Если команда ping вернет ошибку, проверьте следующее:в объекте sender-канала указано верное хост-имя или IP-адрес, а также номер порта для менеджера очередей host1/echo.hub ;
имя объекта sender-канала соответствует имени объекта receiver-канала, объявленного в host1/echo.hub, вплоть до регистра символов;
у менеджера очередей host1/echo.hub имеется активный слушатель.
10.3.7. Настройка и активация канала связи с центральным менеджером очередей
Ниже рассказывается, как автоматически стартовать канал связи между периферийным и центральным менеджерами очередей с помощью инициатора каналов WebSphere MQ при поступлении сообщения в транспортную очередь. Это делается с использованием WebSphere MQ Explorer и команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Выберите папку Queues в менеджере очередей host2/spoke.
Щелкните правой кнопкой очередь host1/echo.hub и выберите Properties.
Перейдите в секцию Triggering окна свойств очереди.
В поле Trigger control установите значение On.
В поле Trigger type введите First.
Введите to.host1/echo.hub в поле Trigger data.
Введите SYSTEM.CHANNEL.INITQ в поле, которое содержит имя очереди инициации.
Щелкните OK.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей host2/spoke:
ALTER QLOCAL('host1/echo.hub') TRIGGER TRIGTYPE(FIRST) + TRIGDATA('to.host1/
echo.hub') INITQ('SYSTEM.CHANNEL.INITQ')
Примечание Для успешной активации канала важен правильный синтаксис атрибутов.
10.3.8. Отправка тестового сообщения по каналу центральному менеджеру очередей
Ниже рассказывается, как отправить по каналу тестовое сообщение центральному менеджеру очередей. В этом примере очередь-получатель сообщения будет задана вручную в менеджере host1/echo.hub, и локально задавать дополнительные сведения о получателе не потребуется. Локальный менеджер очередей может связаться с менеджером host1/echo.hub благодаря наличию транспортной очереди с соответствующим именем. Этот механизм позволяет отправлять ответы через инфраструктуру WebSphere MQ заданным очередям, обслуживаемым заданным менеджером очередей.
Выполните следующую команду WebSphere MQ и введите текст сообщений, предназначенных для отправки очереди, обслуживаемой центральным менеджером:amqsput queue1 host2/spoke 8208 0 host1/echo.hub
Эту команду вызывают со следующими параметрами:queue1 – имя очереди в host1/echo.hub ;
host2/spoke – имя менеджера очередей, к которому требуется подключиться;
8208 – десятичный код параметров запроса, передаваемый при вызове MQOPEN (для данного примера этот параметр не важен, он требует открыть очередь для добавления сообщений и приводит к неудаче последующие попытки добавления сообщений если менеджер очередей находится в процессе остановки);
0 – отсутствие параметров при вызове MQCLOSE (для данного примера этот параметр не важен);
host1/echo.hub – имя менеджера очередей, заданного при вызове MQOPEN. Представляет менеджер очередей, который используется в этом примере. Видно, что его значение соответствует именам удаленного менеджера очередей и транспортной очереди, применяемой менеджером host2/spoke для отправки сообщений.
Периферийный менеджер очередей помещает сообщение в транспортную очередь. В результате инициатору канала менеджера очередей передается триггерное сообщение через SYSTEM.CHANNEL.INITQ. Канал стартует и начинает передачу сообщений удаленному менеджеру очередей. Удаленный MCA, созданный на основе объекта receiver-канала в host1/echo.hub, передает сообщения заданной очереди менеджера-получателя сообщений.
Примечание Для заданной очереди-получателя в центральном менеджере очередей должен быть объявлен объект локальной очереди. Если не удается найти сообщения в транспортной очереди периферийного менеджера либо в удаленной очереди назначения, проверьте очередь недоставленных сообщений dead.letters центрального менеджера. WebSphere MQ Explorer отображает заголовки любых сообщений, попавших в эту очередь.На стороне отправителя для просмотра состояния канала в WebSphere MQ Explorer используется столбец Status таблицы Channels либо следующая команда MQSC:
DISPLAY CHSTATUS('to.host1/echo.hub')
Чтобы вручную запустить канал на стороне отправителя, щелкните канал правой кнопкой и выберите Start. Это также можно сделать, исполнив следующую команду MQSC:START CHANNEL('to.host1/echo.hub')
Чтобы остановить канал, не блокируя его (то есть не препятствуя дальнейшему запуску инициатором канала), выберите пункт Inactive в раскрывающемся списке New State (так можно остановить канал в WebSphere MQ Explorer). Эту операцию также можно выполнить при помощи следующей команды MQSC:STOP CHANNEL('to.host1/echo.hub') MODE(INACTIVE)
10.3.9. Создание объекта receiver-канала для периферийного менеджера очередей
Вышеописанные действия позволят установить связь между периферийным и центральным менеджерами очередей. Созданный канал будет использоваться в дальнейшем для отправки запросов службе, функционирующей в составе менеджера очередей. Однако для маршрутизации ответов службы к запрашивающему приложению необходимо установить связь между центральным и каждым из периферийных менеджеров очередей.
Ниже рассказывается, как объявить объект receiver-канала, который будет использоваться центральным менеджером очередей для подключения к периферийному менеджеру. Это делается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Channels менеджера очередей host2/spoke и выберите New\Receiver Channel.
Введите to.host2/spoke в поле Name.
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей host2/spoke:
DEFINE CHANNEL('to.host2/spoke') CHLTYPE(RCVR)
10.3.10. Создание транспортной очереди для центрального менеджера очередей
Ниже описано создание транспортной очереди для центрального менеджера очередей host1/echo.hub, обеспечивающей временное хранилище для сообщений, предназначенных для отправки периферийным менеджерам очередей. Кроме того, здесь рассказывается, как настроить триггер, запускающий канал (о создании объекта sender-канала см. ниже). Это делается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Queues менеджера очередей host1/echo.hub и выберите New\Local Queue.
Введите host2/spoke в поле Name.
Щелкните Next.
Выберите пункт Transmission в поле Usage.
Введите в поле Description следующий текст:Transmission queue for messages to host2/spoke
Перейдите в секцию Triggering.
Установите для поля Trigger значение On.
Убедитесь, что поле Trigger type содержит значение First.
Введите to.host2/spoke в поле Trigger data. Этот канал будет объявлен ниже.
Введите SYSTEM.CHANNEL.INITQ в поле Initiation queue.
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей host1/echo.hub:
DEFINE QLOCAL('host2/spoke') USAGE(XMITQ) + TRIGGER TRIGTYPE(FIRST) +
TRIGDATA('to.host2/spoke') INITQ('SYSTEM.CHANNEL.INITQ') + DESCR('Transmission
queue for messages to host2/spoke')
10.3.11. Создание объекта sender-канала для центрального менеджера очередей
Ниже описано создание объекта sender-канала, применяемого для подключения к периферийному менеджеру очередей.
Это делается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Channels менеджера очередей host1/echo.hub и выберите New\Sender Channel.
Введите to.host2/spoke в поле Name.
Щелкните Next.
Объект sender-канала будет использован для того, чтобы установить связь с периферийным менеджером очередей, поэтому для поля Connection задают следующее значение:host2.example.com(9002)
Введите host2/spoke в поле Transmission queue.
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей host1/echo.hub:
DEFINE CHANNEL('to.host2/spoke') CHLTYPE(SDR) + CONNAME('host1.example.
com(9002)') XMITQ('host2/spoke')
Примечание На данном этапе рекомендуется проверить командой ping канал со стороны отправителя на менеджере host1/echo.hub, чтобы убедиться в его способности передавать сообщения. Для отправки сообщений через канал необходимо создать тестовую очередь в периферийном менеджере очередей, которому будут направляться сообщения. Соответствующие команды обсуждаются в разделе 10.3.8. Измените параметры команды, показанной в этом разделе, следующим образом:amqsput queue1 host1/echo.hub 8208 0 host2/spoke
10.3.12. Локальное определение удаленной очереди
К данному моменту должна быть установлена двусторонняя связь между центральным и периферийным менеджерами очередей. Вы также освоили отправку сообщений, явно адресованных очереди-получателю.
Однако, запрашивая обслуживание, приложения не должны явно указывать имя менеджера очередей, иначе будет невозможно изменять инфраструктуру без модификации самих приложений.
Ниже рассказывается, как создать для периферийного менеджера локальное определение очереди, обслуживаемой удаленным (центральным) менеджером очередей. Это делается с использованием объекта удаленной очереди. Наличие локального определения объекта удаленной очереди позволяет приложениям указывать при отправке сообщений лишь имя очереди. Далее инфраструктура (а не приложение) самостоятельно определяет маршрут сообщения.
Примечание Объекты удаленных очередей применяются для разных целей; в частности, их часто используют в центрально-лучевой инфраструктуре, в которой каналы, связывающие менеджеры очередей, определяются вручную.
Это делается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Queues менеджера host2/spoke и выберите New\Remote Queue Definition.
Введите echo в поле Name.
Щелкните Next.
Введите в поле Description следующий текст:Local definition for routing requests for the echo service
Введите echo в поле Remote queue. Это поле позволяет задать локальное имя для объекта локальной очереди, расположенной на удаленном менеджере. В этом примере используются идентичные имена.
Введите host1/echo.hub в поле Remote queue manager.
Оставьте поле Transmission queue пустым, поскольку имя транспортной очереди идентично имени удаленного менеджера очередей.
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду в отношении менеджера очередей host2/spoke:
DEFINE QREMOTE('echo') RNAME('echo') RQMNAME('host1/echo.hub') + DESCR('Local
definition for routing requests for the echo service')
10.3.13. Определение очереди ответов для периферийного менеджера очередей
Поскольку приложение может получать сообщения только из очередей, обслуживаемых менеджером очередей, к которому оно подключено, каждому из периферийных менеджеров, запрашивающих обслуживание, необходима очередь, которая будет принимать ответы.
Ниже рассказывается, как создать модельную очередь для динамической генерации очереди ответов при поступлении запросов. Для этого применяют WebSphere MQ Explorer и команды MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Queues для host2/spoke и выберите New\Model Queue.
Введите echo.replies в поле Name.
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей host2/spoke:
DEFINE QMODEL('echo.replies')
10.3.14. Запрос службы echo с периферийного менеджера очередей
Ниже описана процедура отправки запроса приложением, подключенным к периферийному менеджеру очередей; этот запрос будет обработан центральным менеджером очередей.
Примечание Здесь предполагается, что менеджер очередей host1/echo.hub по-прежнему настроен для предоставления доступа к работающей в нем службе. Также важно наличие у очереди инициации echo.initq активного триггерного монитора. Желательно также, чтобы службу могли запрашивать и локальные приложения, подключенные к менеджеру host1/echo.hub (см. раздел 9.4.10).
Выполните следующую команду WebSphere MQ:amqsreq echo host2/spoke echo.replies
Эта команда содержит следующие параметры:echo – имя очереди, разрешаемое локальным менеджером очередей. Благодаря наличию локального определения удаленной очереди сообщения, адресованные echo, маршрутизируются менеджеру host1/echo.hub через транспортную очередь и пару открытых каналов (sender- и receiver-каналы);
host2/spoke – имя локального периферийного менеджера очередей, к которому подключается приложение;
echo.replies – имя модельной очереди, открытой для динамического создания очереди ответов для приложения.
Примечание В команде amqsreq не указано имя менеджера очередей host1/echo.hub, предоставляющего доступ к службе. Инфраструктура сконфигурирована для автоматической маршрутизации запросов, осуществляемой незаметно для запрашивающего приложения.
Введите сообщение и нажмите Enter.
Не вводя сообщения, нажмите Enter.
Подождите 10 секунд.
Если все прошло нормально, вывод команды будет содержать введенное ранее сообщение:response <текст_тестового_сообщения>
Примечание Если вы столкнетесь с трудностями, обратитесь к разделу 9.4.10.
10.4. Создание кластеров менеджеров очередей
Как было показано в предыдущем разделе, объединение нескольких менеджеров очередей в составе центрально-лучевой инфраструктуры требует решения ряда административных задач.
В этом разделе рассказывается о том, как применение кластеров позволяет снизить нагрузку на администраторов по добавлению менеджеров очередей к инфраструктуре WebSphere MQ. Это возможно благодаря тому, что каждый менеджер очередей в составе кластера автоматически получает сведения и объединяется каналами связи с остальными менеджерами кластера.
В этом разделе используется кластер-пример с именем example.cluster.
10.4.1. Создание менеджеров очередей
Создайте четыре менеджера с активными слушателями.
Имена менеджеров очередей отражают их роли в составе кластера (см. табл. 10.1, в которой перечислены имена менеджеров очередей и порты, к которым привязаны их слушатели).
Менеджеры очередей в составе кластера example.cluster
| Имя |
Хост-имя |
Порт слушателя |
Репозиторий |
Имя канала |
| host1/full |
host1.example.com |
9031 |
Полный |
clus.host1/full |
| host1/partial |
host1.example.com |
9032 |
Частичный |
clus.host1/partial |
| host2/full |
host2.example.com |
9033 |
Полный |
clus.host2/full |
| host2/partial |
host2.example.com |
9034 |
Частичный |
clus.host2/partial |
Два из этих менеджеров обслуживают полные репозитории для кластера, которые содержат всю информацию о кластере, а остальные два – частичные, содержащие лишь необходимые им сведения.
Судя по примерам хост-имен в табл. 10.1, эта конфигурация подходит для двух компьютеров. Впрочем, любое из этих имен можно заменить хост-именем или IP-адресом локальной машины.
Примечание Мы не рекомендуем использовать имя localhost или IP-адрес 127.0.0.1 в рабочих кластерах. Впрочем, для данного примера это имя и адрес подходят, если все менеджеры очередей работают на одном компьютере.В кластерах объект receiver-канала, публикуемый менеджером очередей, рассылается менеджерам кластера. Поэтому имя подключения, указанное в его определении, должно быть доступно с любой из машин, на которых работают менеджеры очередей кластера.
10.4.2. Назначение менеджеров очередей с полными репозиториями
Эти действия выполняются в отношении менеджеров очередей host1/full и host2/full.
Данные менеджеры очередей будут настроены так, что в них будут полные репозитории для кластера example.cluster.
Эти действия выполняются с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой значок менеджера очередей в окне навигатора и выберите Properties.
Перейдите в секцию Repository окна свойств менеджера очередей.
Выберите Full repository for a cluster.
Введите example.cluster в поле, которое станет доступным.
Щелкните OK.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей:
ALTER QMGR REPOS('example.cluster')
10.4.3. Создание объектов кластерных receiver-каналов
Описанные ниже действия выполняются над всеми менеджерами очередей кластера.
Объект кластерного receiver-канала, принадлежащий менеджеру очередей из кластера, определяет, как остальные менеджеры из этого кластера будут подключаться к данному менеджеру очередей.
В силу этих причин атрибут "подключение" данного объекта определяет хост-имя или IP-адрес, а также порт, которые должны использовать другие менеджеры очередей для подключения к данному менеджеру. Менеджер очередей может входить в состав нескольких кластеров, поэтому менеджеры очередей из разных кластеров будут подключаться к этому менеджеру, используя разные атрибуты. Для этого объект кластерного receiver-канала настраивают для привязки к кластеру с заданным именем.
Это делается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Channels данного менеджера очередей и выберите New\Cluster-receiver Channel.
Введите " clus.", затем имя менеджера очередей в поле Name. Например, для менеджера host1/full следует ввести:clus.host1/full
Щелкните Next.
Введите имя подключения, которое использует данный менеджер очередей, в поле Connection. Например, для менеджера очередей host1/full введитеhost1.example.com(9031)
Примечание Проследите, чтобы для менеджера очередей, которым управляют в данном примере, были указаны верные имена канала, подключения и номер порта.
Выберите секцию Cluster.
Выберите Shared in cluster.
Введите example.cluster в поле, которое станет доступным.
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду MQSC в отношении менеджера очередей, который используется в данном примере. При этом замените имя host1/full именем этого менеджера, а имя host1.example.com(9031) – именем подключения, которое используется данным менеджером очередей:
DEFINE CHANNEL('clus.host1/full') CHLTYPE(CLUSRCVR) + CONNAME('host1.example.
com(9031)') CLUSTER('example.cluster')
Примечание Проследите, чтобы для менеджера очередей, которым управляют в данном примере, были указаны верные имена канала, подключения и номер порта.
10.4.4. Создание объектов кластерных sender-каналов
Описанные действия выполняются сначала над менеджерами очередей, содержащими полные репозитории данных кластера ( host1/full и host2/full ), а затем над менеджерами очередей, содержащими частичные репозитории ( host1/partial и host2/partial ).
Чтобы войти в кластер, менеджер очередей должен опубликовать определение своего объекта receiver-канала в одном из полных репозиториев кластера. Этот менеджер очередей разделяет данные с остальными полными репозиториями кластера. Чтобы впервые обратиться к полному репозиторию, менеджеру очередей требуются сведения, необходимые для установки соединения. Они предоставляются в виде единственного объекта кластерного sender-канала, объявленного вручную.
Объекту кластерного sender-канала, назначенному для частичного репозитория, можно сопоставить произвольный полный репозиторий. Однако в данном примере с двумя менеджерами очередей, содержащими полные репозитории, объект кластерного sender-канала должен быть сопоставлен полному репозиторию другого менеджера очередей.
Имя объекта кластерного sender-канала должно соответствовать имени объекта кластерного receiver-канала, объявленного для удаленного полного репозитория. Это необходимо, чтобы менеджеры очередей кластера могли получать сведения, необходимые для подключения.
Это делается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Channels менеджера очередей и выберите New -> Cluster-sender Channel.
Введите в поле Name " clus.", затем имя менеджера очередей, содержащего полный репозиторий (доступ к которому нужно получить для подключения к кластеру). Например, для менеджера очередей host1/full следует ввести " clus." и " host2/full ":clus.host2/full
Щелкните Next.
Введите в поле Connection имя подключения, используемого менеджером очередей, с которым нужно связаться для подключения к кластеру. Так, для менеджера очередей host1/full следует ввести:host2.example.com(9033)
Примечание Проследите, чтобы были верно указаны имя подключения и номер порта, используемые менеджером очередей с полным репозиторием, которому соответствует имя канала.
Перейдите в секцию Cluster.
Выберите Shared in cluster.
Введите example.cluster в поле, которое станет доступным.
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду MQSC в отношении данного менеджера очередей, заменив host2/full именем менеджера очередей с полным репозиторием, к которому нужно получить доступ для подключения к кластеру, а имя host2.example.com(9033) – именем подключения, используемого этим менеджером очередей:
DEFINE CHANNEL('clus.host2/full') CHLTYPE(CLUSSDR) + CONNAME('host2.example.
com(9033)') CLUSTER('example.cluster')
Примечание Проследите, чтобы были верно указаны имя подключения и номер порта, используемые менеджером очередей с полным репозиторием, которому соответствует имя канала.
10.4.5. Просмотр сведений о кластере
В результате выполнения вышеописанных действий создан кластер из четырех менеджеров очередей. Просмотр сведений о кластере с помощью WebSphere MQ Explorer и команд MQSC описан в разделе 8.2.
Если один из менеджеров очередей с полным репозиторием (работающий на локальной или удаленной машине) отображается в WebSphere MQ Explorer, структуру кластера можно увидеть в папке Queue Manager Clusters.
Примечание Сразу после создания частичный репозиторий содержит сведения только о нем самом и о полных репозиториях кластера. Дело в том, что у частичного репозитория пока не было причин для запроса информации о других частичных репозиториях кластера из полных репозиториев.
На рис 10.4 показана структура кластера в папке Queue Manager Clusters, отображаемой в окне WebSphere MQ Explorer.
(рис 10.4) Структура кластера example.cluster, отображаемого в WebSphere MQ Explorer
10.4.6. Предоставление общего доступа к очередям кластера
Описанные в этом разделе действия выполняются над всеми менеджерами очередей кластера.
Ниже рассказывается, как создать в каждом из менеджеров кластера очередь с именем cluster.queue и предоставить к ней общий доступ.
Это делается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой папку Queues менеджера очередей, расположенного в папке Queue Managers навигатора, и выберите New\Local Queue.
Введите cluster.queue в поле Name.
Щелкните Next.
Перейдите в секцию Cluster.
Выберите Shared in cluster.
Введите example.cluster в поле, которое станет доступным.
Щелкните Finish.
Применение команд MQSC
Выполните следующую команду MQSC в отношении данного менеджера очередей:
DEFINE QLOCAL('cluster.queue') CLUSTER('example.cluster')
10.4.7. Активация балансировки нагрузки для локального экземпляра очереди
Описанные в этом разделе действия выполняются над всеми менеджерами очередей в кластере.
По умолчанию сообщения доставляются в локальную очередь (если очередь-адресат существует в менеджере очередей, к которому подключено приложение).
В WebSphere MQ V6.0 это правило можно переопределить, активировав механизм балансировки нагрузки для локального и всех остальных экземпляров общей очереди в кластере.
Это делается с использованием WebSphere MQ Explorer или команд MQSC.
Применение WebSphere MQ Explorer
Выполните следующие действия.
Щелкните правой кнопкой значок менеджера очередей в папке Queue Managers в окне навигатора и выберите Properties.
Выберите секцию Cluster в окне свойств менеджера очередей.
Измените значение поля CLWL use queue на Any.
Щелкните OK.
Применение команд MQSC
Выполните следующую команду MQSC в отношении данного менеджера очередей:
ALTER QMGR CLWLUSEQ(ANY)
10.4.8. Балансировка нагрузки по обработке сообщений очередями
Следующие действия можно выполнить над любым менеджером очередей в кластере.
Подключитесь к любому менеджеру очередей и добавьте несколько сообщений. Так, в следующем примере добавляется 100 сообщений:Windows:FOR /L %1 IN (1,1,100) DO echo Message%1 | amqsput cluster.queue host1/
partia
UNIX (с оболочкой Bash или Korn):i=0; while [ $i -lt 100 ]; do let i=i+1; echo Message$i | amqsput cluster.
queue host1/partial; done
Обратите внимание на текущую длину очереди. Просмотрите очередь cluster.queue в каждом из менеджеров очередей кластера (см. раздел 9.3.7).Примечание Число сообщений, попавших в разные экземпляры общей очереди кластера, может отличаться.
10.4.9. Предоставление общего доступа к службе echo в кластере
Ниже рассказывается, как ввести менеджер очередей host1/echo.hub в кластер и предоставить всем менеджерам очередей кластера общий доступ к службе echo. Единственная задача администратора в этом случае – ввести в кластер менеджер очередей host1/echo.hub.
Ниже эти действия описаны более подробно (см. также разделы 10.4.3 и 10.4.4).
Выполните следующие действия.
Создайте объект кластерного receiver-канала со следующими параметрами:имя: clus.host1/echo.hub ;
имя подключения (атрибут CONNAME ): host1.example.com(9001) ;
кластер (атрибут CLUSTER ): example.cluster.
Создайте объект кластерного sender-канала:имя: clus.host1/full ;
имя подключения (атрибут CONNAME ): host1.example.com(9031) ;
кластер (атрибут CLUSTER ): example.cluster.
Измените объект локальной очереди echo, чтобы опубликовать его в кластере.С помощью WebSphere MQ Explorer:Выберите папку Queues менеджера очередей host1/echo.hub, расположенную в папке Queue Managers в окне навигатора, и выберите Properties.
Перейдите в секцию Cluster.
Выберите Shared in cluster.
Введите example.cluster в поле, которое станет доступным.
Щелкните OK.
С помощью команд MQSC:ALTER QLOCAL('echo') CLUSTER('example.cluster')
Примечание Не забывайте заключать атрибуты в составе команд MQSC в одинарные кавычки.
10.4.10. Предоставление общего доступа к очереди echo в кластере
Эту операцию можно выполнить путем запроса службы echo, выполнив программу-пример WebSphere MQ amqsreq с любым из менеджеров очередей кластера.
Примечание Предполагается, что менеджер очередей host1/echo.hub настроен для предоставления доступа к работающей в нем службе echo через очередь echo. Кроме того, у очереди инициации echo.initq должен быть активный триггерный монитор. Рекомендуется убедиться, что служба доступна локальным приложениям, подключенным к менеджеру очередей host1/echo.hub, прежде чем переходить к следующим действиям (см. раздел 9.4.10).
Выполните следующие действия.
Объявите модельную очередь или локальную очередь с именем echo.replies с атрибутами по умолчанию в менеджере очередей.
Выполните следующую команду, указав имя этого менеджера очередей как параметр:amqsreq echo host2/partial echo.replies
Введите сообщение и нажмите Enter.
Не вводя текстa, нажмите Enter.
Ожидайте в течение 10 секунд.
Если команды завершатся успешно, выводится текст введенного ранее сообщения:response <текст_тестового_сообщения>
Примечание Если вы столкнулись с трудностями, обратитесь к разделу 9.4.10.