Взаимодействие менеджеров очередей и клиентские подключения в WebSphere MQ
В этой лекции мы обсудим следующие вопросы:
- Каналы
- Запуск и останов каналов
- Клиентские каналы
- Распределенные каналы сообщений
- Автоопределение каналов
7.1. Каналы
Все сетевые взаимодействия в WebSphere MQ производятся по каналам (channels). Как и понятие "очередь", слово "канал" регулярно встречается в терминологии WebSphere MQ и в разных контекстах может иметь различное толкование. Возможные его значения таковы.
- Установленное сетевое соединение двух менеджеров очередей сообщений или клиентского приложения и менеджера.
После установки WebSphere MQ сетевого соединения, по которому могут передаваться сообщения или команды MQI-интерфейса, оно обозначается как канал.
Канал, который соединяет два менеджера очередей и по которому могут передаваться сообщения, называется каналом сообщений (message channel).
Канал, который соединяет клиентское приложение и менеджер очередей сообщений и по которому могут передаваться вызовы MQI, называют клиентским (client channel), или MQI-каналом (MQI-channel).
- Канальный объект.
Канальные объекты – это объекты, описанные в составе менеджера очередей сообщений. Каждый объект-канал имеет свое название и тип (channel type). Атрибуты канального объекта определяют, как именно происходит коммуникация. От них, к примеру, может зависеть необходимость аутентификации по SSL-протоколу (Secure Sockets Layer) при установлении канала.
Одни типы канальных объектов предназначены для задания порядка установления каналов сообщений для своего менеджера. Другие – служат для описания порядка установления каналов сообщений, ведущих к другим менеджерам очередей сообщений в инфраструктуре.
Одни типы канальных объектов позволяют присоединить менеджер очередей к кластеру. Как только необходимые для подключения канальные объекты описаны, каналы сообщений, направленные к другим менеджерам очередей в кластере и обратно, будут автоматически сформированы.
Другие типы каналов служат для описания прямого подключения приложений к менеджеру очередей по сети.
- Канальный агент (MCA).
Любой канал WebSphere MQ – это сетевая связь двух канальных агентов (MCA – message channel agent).
Любое соединение, как установленное, так и в процессе попытки установления, ведущее от менеджера очередей и обратно, контролируется канальным агентом. Соединение, установленное подключившимся к менеджеру очередей приложением, хотя и не исходит из менеджера, также выполняется средствами MCA.
7.1.1. Введение в клиентские каналы
Если для подключения к менеджеру используется клиентский канал, при каждом функциональном вызове WebSphere MQ со стороны приложения для связи с удаленным менеджером очередей сообщений вызывается агент MCA. Его реализует используемый для подключения к менеджеру API-интерфейс клиента.
Клиентский API может являться частью базового клиента WebSphere MQ. Однако он может быть и клиентом JMS (Java Message Service), поставляемым с WebSphere Application Server, или другим клиентом, например поставляемым в составе Extended Message Service (XMS).
Хотя команды, передаваемые клиентским каналом менеджеру, являются командами MQI, к клиентскому MCA может иметься объектно-ориентированный, например WebSphere MQ C++ или Java API, или стандартизованный интерфейс, такой как JMS или XMS API. Функциональные вызовы перечисленных интерфейсов, которые отсылают или принимают сообщения в инфраструктуре WebSphere MQ, на самом деле в MCA выполняют команды MQI-интерфейса.
7.1.2. Канальные агенты (MCA)
Агент MCA устанавливает канал с агентом-партнером под управлением менеджера очередей сообщений, используя слушатель, предоставленный этим менеджером.
Название обоих агентов и атрибуты обычно определяют заданные в составе менеджера объекты-каналы. Однако те приложения, где применяется клиентский канал, могут определять название и атрибуты своих MCA-агентов самостоятельно.
Для обеспечения возможности получения менеджером очередей сообщений соединения и запуска MCA, если в составе менеджера отсутствует канальный объект с соответствующим названием, возможно автоопределение канала. Объект-канал с соответствующим названием и типом в составе менеджера задается автоматически и остается после разрыва соединения канала. Автоопределение каналов мы обсудим в "Взаимодействие менеджеров очередей и клиентские подключения в WebSphere MQ" "Автоопределение каналов".
Чтобы канал был создан, два MCA-агента должны договориться (negotiate), или связаться (bind) между собой. Ряд действий на этапе "переговоров" агентов приведен в следующем списке.
- Агент, который решает, принимать ли соединение, должен удостовериться, что канальный объект известен менеджеру очередей сообщений с соответствующим названием и типом, и лишь затем разрешить подключение удаленного MCA. Для создания такого объекта может использоваться автоопределение канала, описанное в "Взаимодействие менеджеров очередей и клиентские подключения в WebSphere MQ" "Автоопределение каналов". Атрибуты такого объекта влияют на процедуру "переговоров".
- Канальные объекты могут блокироваться. Если, по меньшей мере, один объект заблокирован, канал не сможет начать работу. Описание способа блокировки канала см. в "Взаимодействие менеджеров очередей и клиентские подключения в WebSphere MQ" "Понятие состояния канала".
- Согласно настройке каждого из агентов возможно квитирование соединения по SSL-протоколу. Агент, который принимает соединение, либо каждый из MCA предоставляет партнеру сертификат, который в процессе квитирования тот должен удостоверить. При этом любой агент можно настроить так, чтобы он принимал соединения исключительно от сущности, имеющей в подтвержденном сертификате определенное отличительное имя (distinguished name).
- Далее для партнерского MCA будет установлен контекст идентификационных данных, что важнее всего для клиентских каналов, где этот контекст служит для подтверждения подлинности каждого MQI-вызова. Контекстом может являться идентификатор пользователя, от чьего имени выполняется клиентское приложение (или агент-партнер), или принудительно выбран конкретный пользовательский идентификатор, назначенный менеджером очередей сообщений на основе атрибута канала.
- Ряд атрибутов канала должен быть согласован обоими MCA, что даст возможность найти значения, приемлемые для каждого. Примером подобного атрибута служит размер пакета, описанный в "Взаимодействие менеджеров очередей и клиентские подключения в WebSphere MQ" "Пакеты". Обычно атрибуты такого рода являются числовыми и принимают меньшее из значений, предложенных каждым из MCA.
На рис. 7.1 процесс установления канала двумя агентами MCA сведен воедино.
увеличить изображение
Рис. 7.1. Установление канала, соединяющего два менеджера или приложение с менеджером
7.2. Запуск и останов каналов
Запуск канала означает запуск агента для подключения к MCA удаленного менеджера и установление канала. Остановом канала называют прекращение коммуникации двух агентов, которые установили канал.
Клиентские каналы запущены, как только приложение подключено к менеджеру, и остаются активными до его отключения.
Для запуска и останова соединяющих менеджеры каналов сообщений могут использоваться команды MQSC START CHANNEL и STOP CHANNEL. Дополнительно они служат для блокировки канальных объектов и ее снятия, а значит, определяют, могут с их помощью запускаться каналы или нет.
Аналогичные функции доступны в WebSphere MQ Explorer. Выберите в навигаторе папку Channels менеджера очередей сообщений, щелкните правой кнопкой мыши по объекту-каналу и укажите пункт меню Start или Stop.
Команда запуска объекта-канала сообщений, который осуществляет связь одного менеджера с другим, приводит к переходу канала в активное состояние. При этом он начинает передавать сообщения из транспортной очереди одного менеджера очередям сообщений другого.
Впрочем, каналы сообщений также могут запускаться автоматически – при появлении сообщения в транспортной очереди, – для чего служит инициатор каналов (channel initiator). Каналы сообщений в кластере менеджеров автоматически запускаются менеджером с помощью инициатора каналов, если это необходимо.
Команда останова канала имеет две функции.
- Остановить все каналы, связанные с канальным объектом, и дать возможность их перезапуска клиентскому приложению, модулю "переговоров" каналов или кластеру менеджеров, когда это необходимо.
В MQSC это действие выполняется при помощи атрибута MODE(INACTIVE) команды STOP CHANNEL. В WebSphere MQ Explorer выберите из выпадающего списка New state окна Stop Channel значение Inactive.
- Блокировать канальный объект, препятствуя установлению использующих его каналов, пока канал не будет разблокирован снова и вручную запущен командой запуска.
В MQSC это действие выполняется при помощи атрибута MODE(STOPPED) команды STOP CHANNEL. В WebSphere MQ Explorer выберите из выпадающего списка New state окна Stop Channel значение Stopped.
7.2.1. Понятие состояния канала
Менеджер очередей сообщений содержит записи состояния, связанные с канальными объектами, о существовании которых ему известно. Таковыми являются канальные объекты, заданные на этом менеджере вручную, описанные в ходе автоопределения автоматически либо известные благодаря кластеру менеджеров.
Для тех типов каналов, которые могут принимать подключения от приложений или от других менеджеров, может существовать несколько записей состояния, связанных с одним канальным объектом. Причина этого в том, что, пользуясь таким канальным объектом, менеджер в состоянии принять несколько подключений.
Для доступа к записям состояния предназначена команда MQSC DISPLAY CHSTATUS. Важнейшим атрибутом записи состояния является атрибут STATUS, представляющий состояние канала в целом.
Если для канального объекта не существует ни одной записи состояния, канал, который связан с таким объектом, считается неактивным, или находящимся в состоянии INACTIVE.
Атрибут STATUS записи состояния может принимать следующие значения.
- RUNNING: работающий канал – канал, в котором "переговоры" MCA-агентов успешно завершены и по которому можно передавать сообщения или команды MQI-интерфейса.
- STOPPED: связанный с записью состояния канальный объект блокирован. Это означает, что установленный с помощью канального объекта канал не станет работать, пока канал не окажется разблокирован. Состояние STOPPED можно вводить, вручную остановив канал MQSC-командой STOP CHANNEL или через интерфейс WebSphere MQ Explorer. Разблокировать канальный объект можно, воспользовавшись командой START CHANNEL в MQSC или WebSphere MQ Explorer. Для канальных объектов, которые устанавливают канал, такое действие означает запуск канала. Запись о состоянии STOPPED сохраняется и после перезапуска менеджера.
- RETRYING: для каналов, производящих установку соединения, это признак того, что попытка осуществить запуск канала закончилась неудачно. Через определенные промежутки канал автоматически пытается установить соединение снова. Подобное поведение определяется атрибутами короткого интервала между попытками (SHORTTMR – short retry interval), счетчика "коротких" попыток (SHORTRTY – short retry count), длинного интервала между попытками (LONGTMR) и счетчика "длинных" попыток (LONGRTY), заданными для объекта-канала. После того как будет предпринято указанное число повторных попыток, канал перейдет в состояние STOPPED и должен быть запущен вручную. Запись о состоянии RETRYING сохраняется и после перезапуска менеджера.
- STOPPING, STARTING, BINDING, REQUESTING, INITIALIZING: промежуточные состояния, в которые каналы могут переходить в процессе установления и закрытия соединения.
- PAUSED: состояние относится к каналам сообщений, повторно предпринимающим попытку доставить сообщение. Оно будет описано нами в "Взаимодействие менеджеров очередей и клиентские подключения в WebSphere MQ" "Ошибки доставки сообщений".
7.2.2. Названия каналов
Названия каналов могут содержать до 20 знаков и состоять из букв верхнего, нижнего регистра и цифр, а также символов ".", "/", "_", "%".
Длина названия канала значительно меньше предельной длины названия очереди на всех платформах, кроме WebSphere MQ для z/OS, равной 48 знакам. Для упрощения администрирования название канала должно адекватно отражать его назначение.
Если длина названий всех менеджеров очередей сообщений в системе не превышает 17 символов, для всех каналов в системе может использоваться такая схема именования:
TO.Менеджер_назначения
Такое соглашение об именах способно работать с распределенными и кластерными каналами сообщений. Его гибкость определяется тем, что к одному менеджеру очередей сообщений, используя одно название канала, может подключиться целый ряд менеджеров, тогда как каждый канал конкретного менеджера подключается лишь к одному менеджеру очередей назначения.