Беларусь, Минск |
Технические основы организации очередей сообщений
6.2.3. Объекты псевдонимов очередей
Объекты псевдонимов очередей являются представлениями других целевых объектов очередей, имеющих другие названия. Обращение к псевдониму очереди аналогично доступу к целевой очереди, чьим псевдонимом она является. Ссылки на псевдоним очереди переправляются целевой очереди, заданной как элемент описания псевдонима.
Атрибут "целевая (базовая) очередь" псевдонима ( TARGQ – target queue, base queue ) содержит имя целевого объекта-очереди.
Этот целевой объект-очередь должен иметь один из следующих типов.
- Локальная очередь, заданная на том же менеджере очередей сообщений, что и псевдоним очереди.
- Удаленная очередь, заданная на том же менеджере очередей сообщений, что и псевдоним очереди.
- Экземпляр очереди, общий для того кластера менеджеров очередей сообщений, в который входит текущий менеджер. Обсуждению кластеров посвящена "Кластеры менеджеров очередей" "Кластеры менеджеров очередей".
Рис 6.4 показывает, как приложение размещает сообщение в локальной очереди через псевдоним очереди. Запрошенное приложением название объекта при разрешении указывает на целевой объект – локальную очередь, как это и вытекает из определения псевдонима.
![Разрешение названия очереди в присутствии объекта псевдонима очереди со ссылкой на локальную очередь](/EDI/14_08_14_2/1407964674-31059/tutorial/400/objects/6/files/06-04.jpg)
Рис. 6.4. Разрешение названия очереди в присутствии объекта псевдонима очереди со ссылкой на локальную очередь
Описать псевдоним очереди можно, используя один из двух методов.
6.2.4. Объекты модельных очередей и динамическое создание локальных очередей сообщений
Объекты модельных очередей содержат атрибуты объектов – локальных очередей, которые могут создаваться приложением динамически. Очереди, которые построены динамически, являются экземплярами локальных очередей и могут содержать сообщения. В этой книге динамически созданный экземпляр локальной очереди сообщений обычно назван динамической очередью.
Задача динамической очереди – стать временным объектом для приложения в инфраструктуре очередей сообщений WebSphere MQ. Самым распространенным примером ее использования является организация собственной очереди ответов для приложения при обмене сообщениями по принципу "запрос – ответ". Об этом шла речь в "Создание приложений для доступа к инфраструктуре WebSphere MQ" "Реализация очереди ответов".
Приложение может динамически создать локальную очередь, просто указав имя объекта модельной очереди как название объекта в структуре M Q O D , передаваемой MQOPEN. Название созданной локальной очереди сообщений не связано с названием объекта модельной очереди.
Название динамической очереди выбирается приложением, вызвавшим MQOPEN. Для этого в MQOD входит поле "название динамической очереди" ( DynamicQName ).
В конце поля названия в составе MQOD можно указать символ маски. Он вынуждает менеджер очередей самостоятельно создать остальную часть ее имени. Это имя уникально в пределах менеджера. Для обеспечения уникальности всех 48 символов названия объекта-очереди размещать маску после 33-го символа в поле названия динамической очереди нельзя.
По умолчанию поле названия динамической очереди в MQOD принимает следующие значения.
После того как динамическая очередь создана, обращаться к ней можно так же, как и к локальной очереди, которая формировалась вручную. Приложения должны посылать такой очереди сообщения, используя ее динамически созданное название, а не название объекта модельной очереди.
Существует два разных типа динамических локальных очередей. Атрибут "тип определения" ( DEFTYPE ) объекта модельной очереди указывает, какого типа динамическая очередь создается, если открыть упомянутый модельный объект. Тип динамической очереди влияет на то, как ею можно будет воспользоваться и когда менеджер очередей ее удалит. Существующие типы задания перечислены ниже.
- Динамический временный (TEMPDYN).
Временная динамическая локальная очередь может содержать только непостоянные сообщения. Причина этого в том, что менеджер очередей сообщений может автоматически ее удалить. При этом не сохранится ни одно сообщение, которое в ней окажется. Временная динамическая локальная очередь удаляется менеджером при следующих условиях:
- если приложение выполняет функцию MQCLOSE с описателем объекта ( Hobj ), полученного как результат вызова MQOPEN, создавшего эту очередь;
- если приложение отключается от менеджера вызовом MQDISC;
- после обнаружения менеджером закрытия приложения, если то завершилось без выполнения MQDISC;
- при перезапуске менеджера.
- Динамический постоянный (PERMDYN).
Постоянная динамическая локальная очередь может содержать как постоянные, так и непостоянные сообщения. Такие очереди не удаляются менеджером очередей сообщений автоматически. Вручную постоянную динамическую локальную очередь можно удалить следующим образом:
- вызовом MQCLOSE с опцией удаления ( MQCO_DELETE ) из приложения, не обязательно создавшего очередь изначально вызовом MQOPEN. Успешно вызов функции MQCLOSE завершится лишь при пустой очереди;
- вызовом MQCLOSE с опцией удаления и очистки ( MQCO_DELETE_PURGE ) из приложения, не обязательно создавшего очередь изначально вызовом MQOPEN. Вызов функции MQCLOSE будет успешным даже при непустой очереди. Однако он завершится с ошибкой, если в составе очереди имеются сообщения, размещенные в ней или извлеченные из нее в рамках единицы работы, которая еще не зафиксирована, но и не аннулирована, – такие сообщения относят к незафиксированным;
- удалением объекта-очереди из интерфейса администрирования, такого как WebSphere MQ Explorer или MQSC.
Для описания объектов модельных очередей используйте один из следующих методов:
6.2.5. Объекты удаленных очередей
Объекты удаленных очередей служат для описания маршрутов к другим менеджерам очередей сообщений в инфраструктуре WebSphere MQ. В описание входит отображение названий менеджеров на транспортные очереди и названий очередей – на имена других различных очередей под управлением удаленных менеджеров очередей сообщений.
Для объектов удаленных очередей есть три способа применения.
- Как локальное определение удаленной очереди сообщений.
С его помощью приложение может открыть удаленный объект-очередь для того, чтобы помещать в эту очередь сообщения, явно не указывая название удаленного менеджера очередей, то есть аналогично тому, как оно помещает их в локальную очередь. В этом случае удаленным объектом-очередью можно воспользоваться затем, чтобы разместить очередь в составе удаленного менеджера, не внося изменений в приложение, созданное для работы с очередью локальной. Чтобы сформировать локальное определение удаленной очереди сообщений, создайте объект типа "удаленная очередь" с атрибутами, которые перечислены ниже.
- Название объекта "удаленная очередь".
Название очереди, в которую подключенные к менеджеру очередей приложения помещают свои сообщения.
- Удаленное имя ( RNAME ).
Название очереди, которой управляет целевой менеджер. Может полностью совпадать с названием объекта "удаленная очередь". Данное название очереди используется при разрешении названия очереди на удаленной машине.
- Название удаленного менеджера очередей сообщений ( RQMNAME ).
Название, которое имеет целевой менеджер, не обязательно являющийся очередным менеджером маршрута. Данное название менеджера используется при разрешении названия очереди на удаленной машине.
- Транспортная очередь ( XMITQ ).
Содержит название транспортной очереди, которая передает сообщения очередному менеджеру маршрута к месту их назначения. Если удаленный менеджер очередей имеет то же название, что и транспортная очередь, атрибут может не заполняться.
Рис 6.5 показывает, как приложение посылает сообщение, пользуясь локальным описанием очереди на удаленной машине. Название объекта, которое указано приложением, – это название объекта "удаленная очередь". При разрешении названия очереди сообщение будет размещено в заданной в описании удаленной очереди сообщений транспортной очереди. К сообщению при передаче будет прикреплен заголовок транспортной очереди с атрибутами, взятыми из описания объекта "удаленная очередь". Ими станут удаленное имя и название удаленного менеджера очередей сообщений. Когда сообщение достигнет места своего назначения, информация из заголовка транспортной очереди послужит для разрешения названия очереди в составе удаленного менеджера.
- Название объекта "удаленная очередь".
- Как псевдоним менеджера очередей сообщений.
Служит для того, чтобы менеджер получил сведения о маршруте, ведущем к менеджеру целевой очереди. Применяется, если название менеджера целевой очереди отлично от названия используемой для направления сообщений этому менеджеру транспортной очереди. Также псевдонимы такого рода могут использоваться в целях отображения одного названия менеджера очередей на другое. Частным случаем этого является отображение на пустое название, которое обозначает локальный менеджер очередей или выступает как признак необходимости балансировки нагрузки при работе с кластером менеджеров.
- Название объекта "удаленная очередь".
Название менеджера очередей сообщений, для которого формируется псевдоним. В тех случаях, когда указанное название менеджера очередей объекта совпадает с названием объекта "удаленная очередь", он служит для разрешения названия.
- Удаленное имя ( RNAME ).
Применительно к псевдониму атрибут должен быть незаполнен.
- Название удаленного менеджера очередей сообщений ( RQMNAME ).
Название менеджера целевой очереди, не обязательно очередного менеджера маршрута. После направления сообщения очередному менеджеру маршрута с использованием указанной транспортной очереди данное название менеджера используется при разрешении названия. Может оставаться пустым для указания необходимости в разрешении названия очереди аналогично тому, как если бы название менеджера не было указано вовсе.
- Транспортная очередь ( XMITQ ).
Содержит название транспортной очереди, которая передает сообщения очередному менеджеру маршрута к месту их назначения. Если удаленный менеджер очередей имеет то же название, что и транспортная очередь, атрибут может не заполняться. Также он может не заполняться при описании псевдонима для локального менеджера.
Рис 6.6 показывает, как приложение посылает сообщение, используя псевдоним менеджера очередей сообщений. Название менеджера очередей объекта, которое указано приложением, преобразуется в другое название менеджера, для доставки которому сообщение будет размещено в транспортной очереди.
- Название объекта "удаленная очередь".
- Как псевдоним очереди ответов.
Псевдоним очереди ответов служит для настройки маршрутов, которыми ответы перемещаются к менеджеру по компонентам инфраструктуры. Влияет на название менеджера очереди ответов в дескрипторе сообщения при размещении сообщения приложением, но не на разрешение названия очереди при открытии таковой. Применение псевдонимов очереди ответов выходит за рамки книги. Подробнее об этом см. руководство WebSphere MQ Intercommunication, SC34-6587.
Для описания объектов удаленных очередей используйте один из следующих приемов.