Интеграция приложений на основе WebSphere MQ
Лекция #3: Основные объекты менеджера очередей WebSphere MQ В лекции рассмотрены различные типы очередей, их свойства и особенности при работе в составе менеджера очередей WebSphere MQ. Описаны всевозможные типы каналов и их свойства. Приведены формы для создания очередей и каналов на основе WebSphere MQ Explorer под Windows, позволяющие создавать эти объекты, как на локальных менеджерах, так и на удаленных менеджерах очередей, работающих на других серверах и других операционных системах.
### Очереди Очереди - это объекты менеджера очередей WebSphere MQ, исполняющие роль контейнера сообщений. Они служат для хранения ( в том числе информации об объектах WebSphere MQ) и передачи сообщений; активации (запуска) процесса (приложения). В зависимости от назначения очереди бывают следующих типов. Локальные очереди. В них непосредственно находятся сообщения. Такие очереди могут быть простыми локальными, трансмиссионными, динамическими и системными. Простая локальная очередь (local queue) создается и существует как самостоятельный объект, независящий от других объектов. В нее приложения могут помещать или забирать сообщения. Кроме того, локальная очередь может использоваться как очередь инициализации для запуска того или иного процесса. Трансмиссионная или очередь передачи (transmission queue) создается как самостоятельный объект, но она используется с парой других объектов (Remote queue и sender/server каналом) для дальнейшей доставки сообщений в другую очередь, расположенную на другом менеджере очередей. Динамическая очередь (dynamic queue) создается в процессе работы модельной очереди (model queue). На основе параметров модельной очереди формируется динамическая, WebSphere MQ работает с ней, а по окончании работы (помещения или извлечения сообщения) может ее удалить или оставить, а при следующем обращении к модельной очереди создать новую динамическую очередь. Системные очереди (system queue) служат для управления командами и для хранения информации о шаблонах вновь создаваемых очередей. Их названия, как правило, начинаются с SYSTEM. Например, очередь SYSTEM.DEFAULT.LOCAL.QUEUE служит шаблоном для создания простой локальной и трансмиссионной очередей. Достаточно один раз изменить какой-нибудь параметр в этой очереди, и все остальные (локальные и трансмиссионные) будут в дальнейшем создаваться с этим параметром. Иными словами в этой очереди хранятся параметры, задаваемые по умолчанию при создании локальных и трансмиссионных очередей. Локальная удаленная (Remote queue) очередь существует для определения параметров передачи и формирования сообщений. Несмотря на то, что сообщения не попадают в эту очередь, в программе или в приложениях, отправляющих сообщения, следует указывать именно ее. Система WebSphere MQ берет параметры из Remote queue, формирует заголовок сообщения, и помещает сообщение в соответствующую трансмиссионную очередь для дальнейшей отправки по месту назначения. Используя псевдоочередь (alias), можно "перенаправить" помещение сообщений в ту или иную очередь. Создать объекты менеджера очередей WebSphere MQ можно двумя способами: с помощью команд MQSC (MQSeries Commands) и с помощью WebSphere MQ Explorer. Для того чтобы создать очередь WebSphere MQ посредством WebSphere MQ Explorer нужно вызвать контекстное меню, правой кнопкой мыши нажав на группу Queues, выполнить пункт "Создать" и выбрать соответствующий тип очереди (рис.3.1) Рис. 3.1. Создание очереди с помощью WebSphere MQ Explorer Далее в зависимости от типа выбранной очереди появится форма для заполнения свойств очереди. Для локальной очереди ее вид представлен на рис.3.2, для alias - на рис.3.4, для remote - на рис. 3.5. Форма для модельной очереди практически не отличается от формы для локальной. Различные типы очередей отображаются в WebSphere MQ Explorer с помощью пиктограмм, которые приведены ниже:
| - локальная очередь;
| - локальная очередь, физически расположенная на локальном менеджере очередей и включенная в кластер;
| - кластерная очередь, физически расположенная на удаленном менеджере очередей и включенная в кластер;
| - локальная трансмиссионная очередь;
| - модельная очередь;
| - локальная удаленная очередь, физически расположенная на локальном менеджере очередей;
| - локальная удаленная очередь, физически расположенная на локальном менеджере очередей и включенная в кластер;
| - удаленная очередь, физически расположенная на удаленном менеджере очередей, включенная в кластер;
| - псевдоочередь;
| - псевдоочередь, физически расположенная на локальном менеджере очередей и включенная в кластер;
| - псевдоочередь, физически расположенная на удаленном менеджере очередей и включенная в кластер;
### Свойства локальных очередей Форма для создания локальной очереди (рис.3.2) имеет 6 закладок: General, Extended, Cluster, Triggering, Events и Storage. В каждую закладку вводятся те или иные атрибуты или свойства очереди. Ниже при описании атрибутов будет даваться краткая информация, для каких типов очередей имеет значение тот или иной атрибут, указываться в скобках через запятую первые символы типов очередей (L - локальная, M - модельная, A - alias, Remote - удаленная, C - кластерная). Рис. 3.2. Форма для заполнения свойств локальной очереди После создания очереди появляется еще одна закладка Statistics, в которой содержится информация о дате, времени создания и последнего изменения свойств очереди, количестве сообщений в очереди и количестве приложений, открывших очередь для чтения и записи. #### Закладка General Queue Name - имя очереди. Может содержать до 48 знаков. Русские буквы не поддерживаются, как и в любых параметрах всех без исключения объектов WebSphere MQ. Изменить имя очереди нельзя.(L, M, A, R, C) Type - тип очереди. Выставляется автоматически (Local). Description - описание. Может содержать до 64 знаков. (L, M, A, R, C) Put Messages - разрешение/запрещение помещения сообщений в очередь. Имеет два значения Allowed - разрешено и Inhibited - запрещено. (L, M, A, R, C) Get Messages - разрешение/запрещение считывания сообщений из очереди. Имеет два значения Allowed - разрешено и Inhibited - запрещено. (L, M, A) Default Priority - приоритет сообщений, помещенных в очередь. Наивысший приоритет - 0, наименьший 9. Приоритет указывает на то, в каком порядке будут обработаны или переданы сообщения, находящиеся в очереди. Первыми будут обработаны сообщения, имеющие наивысший приоритет. Значение по умолчанию - 0. Если приоритет задается программой, помещающей сообщения в очередь, то он сохраняется. (L, M, A, R, C) Default Persistence - способ хранения сообщения. Имеет два значения Persistent и Not Persistent. Значение Persistent указывает на то, что сообщения, помещаемые в очередь, будут записаны на диск. В случае остановки менеджера очередей или его сбоя они остаются на жестком диске и после старта менеджера или устранения сбоя остаются в очереди. Значение Not Persistent указывает на то, что сообщения будут храниться в оперативной памяти. Соответственно после остановки, сбоя менеджера или компьютера восстановлению не подлежат. В первом случае можно выиграть в надежности, но проиграть в скорости обработки, во втором - наоборот. Scope - контекст, поддерживается только для OS/400. (L, A, R) Usage - тип локальной очереди. Имеет два значения Local и Transmission. Первое говорит о том, что очередь будет выступать в роли простой локальной, то есть сообщения, помещенные в нее приложениями или доставленные от других менеджеров очередей, не будут никуда переданы. Их можно будет считать только программным способом. Значение Transmission указывает на то, что очередь будет трансмиссионной, и служит для передачи сообщений на другой менеджер очередей с помощью соответствующей локальной удаленной (remote) очереди и sender-канала. (L, M) #### Закладка Extended Maximum Queue Depth - указывает на максимально допустимое количество сообщений, которые могут находиться в очереди. При превышении данного параметра сообщения, доставленные от других менеджеров, будут помещаться в очередь недоставленных сообщений DEAD_LETTER. Если же будет переполнена очередь DEAD_LETTER, то сообщения будут накапливаться в трансмиссионной очереди удаленного менеджера. В случае программного помещения сообщений, при переполнении очереди, программе, помещающей сообщения, будет выдано сообщение об ошибке. Максимальное количество сообщений в очереди на платформах AIX, HPUX, z/OS, Solaris и Windows не может превышать 999 999 999. На других платформах данный параметр не может превышать 640 000. (L, M) Maximum Message Length - указывает максимальную длину сообщения. По умолчанию - 4194304 байт. Максимальный размер сообщения может быть 100 Мб. (L, M) Shareability - разрешает или запрещает нескольким приложениям одновременно открывать очередь. (L, M) Default Input Open Option - разрешает или запрещает нескольким приложениям помещать сообщения в очередь одновременно. (L, M) Message Delivery Sequence - определяет порядок сортировки сообщений в очереди при вызове команды MQGET. Имеет два значения FIFO и Priority. Значение FIFO говорит о том, что сообщения в очереди будут обрабатываться по принципу "первым пришел - первым ушел". Значение Priority позволяет обрабатывать сообщения по их приоритетам. (L, M) Retention Interval - время "актуальности" очереди. Сугубо информативный постоянный атрибут, служащий для удобства администрирования. Измеряется в часах. Менеджер очередей не предпринимает никаких действий для удаления очереди, когда разность между временем создания очереди и данным значением истечет. Полезно использовать для написания программ, отслеживающих актуальность очередей, если они были созданы только на определенный период. (L, M) Definition Type - тип создания и работы динамических очередей. Используется только для модельной очереди. Имеет значения Temporary - созданные динамические очереди удаляются вместе с сообщениями после закрытия модельной очереди, и Permanent - динамические очереди не удаляются. (L, M) Distribution List - используется трансмиссионными очередями в процессе рассылки. Имеет два значения Enabled и Disabled. В первом случае сообщение из трансмиссионной очереди передается согласно списку рассылки. Во втором - только на один менеджер очередей. (L, M) #### Закладка Cluster Not shared in cluster - говорит о том, что очередь недоступна для кластера WebSphere MQ. Shared in cluster - доступна для кластера WebSphere MQ. (L, A, R) Shared in a list of clusters - доступна для списка кластеров WebSphere MQ. (L, A, R) Default Bind - используется для открытия кластерной очереди. Закладка Cluster одинакова для всех объектов, которые могут быть включены в кластер WebSphere MQ. #### Закладка Triggering Trigger Control - разрешает (On) или запрещает (Off) инициацию триггерного события. (L, M) Trigger Type - триггерное событие запускается на каждое сообщение (Every), на первое (First), по достижению определенного числа сообщений в очереди (Depth) или не запускается (None). (L, M) Trigger Depth - указывает число сообщений в очереди, по достижению которого инициируется триггерное событие. Работает в случае, если атрибут Trigger Type выставлен в значение Depth. (L, M) Trigger Message Priority - триггерное событие инициируется только для сообщений, имеющих данный приоритет или выше. Следует напомнить, чем ниже значение атрибута Default Priority, тем выше приоритет сообщения. (L, M) Trigger Data - данные (строка), которые будут помещены в триггерное сообщение. С помощью этого поля можно передать данные программе, запускающейся по наступлению триггерного события. (L, M) Initiation Queue Name - имя очереди инициализации триггерного события. (L, M) Process Name - имя процесса WebSphere MQ, который запускается при наступлении триггерного события. (L, M) #### Закладка Events Maximum Depth Event - разрешает (Enable) или запрещает (Disable) генерацию event-сообщения при достижении в очереди максимального количества сообщений. (L, M) High Depth Event - разрешает (Enable) или запрещает (Disable) генерацию event-сообщения при достижении в очереди количества сообщений, указанных в атрибуте High Depth Limit. Может изменяться автоматически с Enable на Disable при превышении сообщениями в очереди значения High Depth Limit. (L, M) High Depth Limit - количество сообщений в очереди, при котором генерируется event-сообщение. Активно только при опции Enable в атрибуте High Depth Event. Значение по умолчанию - 80. (L, M) Low Depth Event - разрешает (Enable) или запрещает (Disable) генерацию event-сообщения при достижении в очереди количества сообщений, указанных в атрибуте Low Depth Limit. (L, M) Low Depth Limit - количество сообщений в очереди, при котором генерируется event-сообщение. Активно только при опции Enable в атрибуте Low Depth Event. Значение по умолчанию - 20. (L, M) Service Interval Event - тип event-сообщения. Имеет три значения High, None или Ok. High - event-сообщение генерируется в том случае, если в течение периода времени, указанного в Service Interval, не было попыток прочитать сообщения из очереди. Ok - event-сообщение генерируется, если в течение времени Service Interval была попытка прочитать сообщения в очереди. None - event-сообщения (High или Ok) не генерируются. (L, M) Service Interval - промежуток времени в миллисекундах, в течение которого отслеживается попытка прочитать сообщения из очереди. Отсчитывается от времени помещения последнего сообщения. Значение по умолчанию - 999999999. (L, M) Для разрешения генерации event-сообщений необходимо открыть с помощью контекстного меню свойства менеджера очередей и в закладке Events выставить значения Enable для соответствующих типов событий (рис.3.3). Генерируется еvent-сообщение в системной очереди SYSTEM.ADMIN.PERFM.EVENT. Подробнее о формате данного сообщения можно узнать из документации по WebSphere MQ [8]. #### Закладка Storage Backout Requeue Name - имя очереди, в которую можно поместить сообщение при достижении атрибутом сообщения Backout Count (счетчик откатов транзакций) значения атрибута очереди Backout Threshold. (L, M) Backout Threshold - значение порога откатов транзакции, при котором сообщение можно поместить в очередь, указанную в атрибуте Backout Requeue Name. (L, M) Harden Get Backout - способ хранения информации об атрибуте сообщения Backout Count. Имеет два значения Hardened и Not Hardened. В первом случае информация о Backout Count хранится на диске, во втором в памяти. Для систем OpenVMS, OS/2, OS/400, Tandem NonStop Kernel, UNIX systems, and Windows NT этот атрибут всегда Hardened, несмотря на выставленное значение. (L, M) Атрибуты закладки Storage сугубо информативные. Менеджер очередей не предпринимает никаких действий в результате достижения или превышения значения Backout Threshold значением Backout Count. Эти атрибуты удобно использовать для написания программ в том случае, если не удается совершить транзакцию с одной очередью - тогда возможно переложить сообщение в другую. Рис. 3.3. Разрешение генерации event-сообщений для менеджера очередей Как говорилось выше, форма для создания модельной очереди практически ничем не отличается от простой локальной. Для создания модельной очереди имеют значения атрибуты Default Persistence и Definition Type. Свойство Definition Type может быть установлено в Temporary или Permanent. В первом случае, после открытия модельной очереди создается временная динамическая очередь, и сообщения, которые должны быть помещены в модельную очередь помещаются в созданную динамическую. После закрытия модельной очереди созданная динамическая удаляется вместе со всеми сообщениями, помещенными за сеанс работы с данной модельной очередью. Во втором случае на каждое сообщение создается своя динамическая очередь, которая не удаляется. Свойство Default Persistence для модельной очереди может быть всегда установлено в Not persistent, а в Persistent только, если свойство Definition Type - Permanent. Вышеизложенное наглядно демонстрирует таблица 3.1.
Таблица 3.1. Результаты работы динамической очереди в зависимости от атрибутов Default Persistence и Definition Type
Default Persistence | Definition Type | Результат работы динамической очереди
--- | --- | ---
Not persistent | Temporary | На сеанс работы с модельной очередью создается одна временная динамическая. Сообщения помещаются в нее. После закрытия модельной очереди динамическая удаляется вместе со всеми сообщениями
Not persistent | Permanent | На каждое сообщение, помещенное в модельную очередь создается своя динамическая. После закрытия модельной динамические очереди не удаляются, но имеют тип Not persistent.
Persistent | Temporary | При попытке поместить сообщение в модельную очередь будет выдаваться сообщение об ошибке с кодом 2048, которое говорит о том, что нельзя поместить persistent сообщение в динамическую временную очередь.
Persistent | Permanent | На каждое сообщение, помещенное в модельную очередь создается своя динамическая. После закрытия модельной очереди динамические очереди не удаляются и имеют тип Persistent.
Форма для создания alias очереди (рис. 3.4) имеет 2 закладки: General и Cluster Рис. 3.4. Форма для заполнения свойств alias очереди Единственным отличием закладки General для alias очереди является атрибут Base Queue Name - имя очереди, с которой действительно будет работать приложение, т.е. помещать или считывать сообщения. Как видно, у данного типа очереди нет параметров подобных максимальному количеству сообщений. При работе с данным типом очереди следует учитывать атрибуты сопоставленной Base Queue Name.(А) Форма для создания локальной удаленной очереди (рис. 3.5) имеет 2 закладки: General и Cluster. Рис. 3.5. Форма для заполнения свойств удаленной локальной очереди #### Закладка General Атрибуты Queue Name, Type, Description, Put Messages, Default Priority, Default Persistence, Scope аналогичны атрибутам для локальной очереди. Remote queue Name - имя локальной очереди на удаленном менеджере, в которую должно быть доставлено сообщение.(R) Remote queue Manager Name - имя удаленного менеджера очередей, на котором существует локальная очередь, указанная в атрибуте Remote queue Namе. (R) Transmission Queue Name - трансмиссионная очередь для передачи сообщений в очередь, указанную в атрибуте Remote queue Namе. (R) В каждой закладке в названиях атрибутов имеются подчеркнутые буквы. При нажатии Alt + "подчеркнутая буква" курсор перемещается в соответствующее поле. Заканчивая описание атрибутов очередей, можно сказать, что практически все параметры атрибутов, выставляемые по умолчанию, удовлетворяют условиям нормальной работы интерфейсов передачи данных. Наиболее критичным является параметр Maximum Queue Depth, так как при переполнении очереди нарушается последовательность передачи сообщений. В связи с этим, рекомендуется устанавливать максимальное значение для этого атрибута. Кроме того, необходимо обратить внимание на атрибут Default Persistence. Если сообщения носят информативный характер и не требуют восстановления в случае сбоя, то всегда следует устанавливать значение этого атрибута в Not Persistent. Это существенно улучшает производительность, хотя даже при значении атрибута Persistent в большинстве случаев скорость передачи сообщений удовлетворяет требуемым условиям, к тому же сообщения не исчезают при сбоях. ### Каналы Каналы WebSphere MQ - это объекты менеджеров очередей, позволяющие создавать коммуникации или линии связи между менеджерами очередей, по которым передаются сообщения. Каналы между серверами, содержащими менеджеры очередей всегда однонаправленные. Каналы, использующиеся при соединении типа клиент-сервер - двунаправленные. При создании линии связи между двумя менеджерами необходимо создать каналы с одинаковыми именами на каждом менеджере. Назовем каналы типа sender и server каналами-отправителями, а каналы типа receiver и requester - каналами-получателями. Соответствие пар каналов представлено в таблице 3.2.
Таблица 3.2. Соответствие пар каналов.
Канал, инициирующий соединение | Направление передачи данных | Отвечающий канал
--- | --- | ---
Sender | ==> | Receiver
Sender | ==> | Receiver
Sender | ==> | Requester
Requester | <== | Server
Requester | <== | Sender
Для того, чтобы создать канал WebSphere MQ с помощью WebSphere MQ Explorer нужно вызвать контекстное меню, правой кнопкой мыши нажав на группу Channels, выполнить пункт "Создать" и выбрать соответствующий тип канала (рис. 3.6). Рис. 3.6. Создание канала с помощью WebSphere MQ Explorer Далее в зависимости от выбранного типа канала появится форма для заполнения свойств канала. Для sender и server каналов ее вид представлен на рис.3.7, для receiver - на рис.3.8, для requester - на рис. 3.9. Форма для sender - канала практически не отличается от формы для server - канала. Создание кластерных каналов подробно изложено в лекции 6. Различные типы каналов отображаются в WebSphere MQ Explorer с помощью пиктограмм, которые приведены ниже:
| - receiver
| - requester
| - sender;
| - server;
| - cluster receiver;
| - cluster sender;
| - server connection.
### Основные свойства каналов Форма для создания sender и server каналов (рис. 3.7) имеет шесть закладок: General, Extended, MCA, Exits, LU 6.2, Retry и SSL. Рис. 3.7. Форма для заполнения свойств sender - канала #### Закладка General Channel Name - имя канала. Может содержать до 20 знаков. Изменить имя канала нельзя. Type - тип очереди. Выставляется автоматически (Sender). Description - описание. Может содержать до 64 символов. Transmission Protocol - тип транспортного протокола. Имеет значения LU62, TCP, UDP, NETBIOS, SPX. Значение по умолчанию - TCP. Connection Name - имя компьютера (с указанием в скобках номера порта для службы listener), с которым надо установить соединение для передачи сообщений. Может содержать 48 символов для z/OS, для других платформ - 264. Следует сказать, что можно указывать либо номер TCP, либо имя компьютера в домене. Для поддержки доменных имен необходимо установить Microsoft Active Directory Client Extensions. Transmission Queue - имя трансмиссионной очереди, участвующей в процессе передачи сообщений. Local Communication Address - локальный коммуникационный адрес канала. Используется в том случае, когда требуется указать особенный адрес с диапазоном (или без него) портов, к которому будет привязан канал. Применяется только для TCP протокола. #### Закладка Extended Maximum Message Length - максимальный размер передаваемого сообщения. Значение по умолчанию - 4194304 байт. Heartbeat Interval - интервал времени, в течение которого sender - канал периодически проверяет состояние receiver- канала. Значение может быть в пределах от 0 до 999 999 секунд. Значение по умолчанию - 300. Если интервал равен 0, то sender - канал не получает информации о состоянии receiver - канала. Для лучшего функционирования значение Heartbeat Interval должно быть существенно ниже значения Disconnect Interval. Проверка состояния receiver - канала также освобождает буфер от посланных ранее длинных сообщений и закрывает открытую очередь (если она еще не закрыта), в которую были переданы сообщения. Sequence Number Wrap - значение счетчика сообщений (Messages count), при котором он переводится в единицу. Может варьироваться в пределах от 100 до 999 999 999. Когда канал стартует в первый раз после создания, то счетчик сообщений, прошедших через этот канал равен единице. Далее он растет в соответствии с количеством переданных (для отправителей) или принятых (для получателей) сообщений. При достижении числа сообщений равным Sequence Number Wrap счетчик сбрасывается и становится равным единице. И так далее. Счетчик сообщений также может быть переведен в любое значение с помощью команды MQSC reset channel. Non-persistent Message Speed - способ передачи nonpersistent сообщений. Имеет два значения Fast и Normal. В первом случае сообщения передаются без транзакций, что дает более высокую скорость передачи, но в случае остановки канала в момент передачи сообщения, оно может быть потеряно. Batch Size - указывает на максимальное количество сообщений, которые могут быть переданы пакетом до наступления момента синхронизации. Число колеблется в пределах от 1 до 9999. Для улучшения производительности можно сделать это значение максимальным, но следует учитывать, что система WebSphere MQ использует для определения момента синхронизации наименьшее из значений Batch Size на паре каналов и значений Maximum Uncommitted Messages на соответствующей паре менеджеров очередей. Кроме этого, момент синхронизации (передача пакета) наступает, когда в трансмиссионной очереди нет сообщений в течение времени, указанном в атрибуте Batch Interval независимо от значения Batch Size. Значение по умолчанию -50. Batch Interval - значение интервала времени в миллисекундах, в течение которого канал ждет появления сообщений в трансмиссионной очереди прежде чем начать передачу пакета данных. Может находиться в пределах от 0 до 999 999 999. Значение по умолчанию - 0. Если оставить это значение пустым, то тогда станет актуальным атрибут Batch Size или когда трансмиссионная очередь становится пустой. Disconnect Interval - значение интервала тайм-аут. Измеряется в секундах от времени передачи последнего сообщения. По истечении этого интервала каналы отправители переходят в нейтральное состояние, если отсутствуют сообщения в трансмиссионной очереди и значение Batch Size превышено или значение Batch Interval истекло. Значение по умолчанию - 6000. Data Conversion - задает возможность конвертации сообщений. Имеет два значения Yes и No. Если удаленный менеджер поддерживает механизм конвертации, то сообщение будет перекодировано в кодовую страницу удаленного менеджера. Если же удаленный менеджер не поддерживает конвертацию, то данный атрибут показывает, что сообщение должно быть перекодировано в кодовую страницу удаленного менеджера перед передачей. Конвертация происходит на основе таблиц кодировки, которые располагаются в C:\Program Files\IBM\WebSphere MQ\conv\table. Если в данной папке нет соответствующей таблицы кодировки, то не удастся установить соединение между менеджерами очередей, не говоря уже о конвертации. #### Закладка MCA MCA User ID - идентификатор пользователя, который использует MCA (Message Channel Agent) для авторизации доступа к ресурсам WebSphere MQ, включая помещение сообщений в назначенную очередь. Если данный атрибут не вводить, то будет применяться имя пользователя по умолчанию. MCA Type - для AIX, AS/400, Windows NT, HP-UX, OS/2, и Sun Solaris может иметь значения Process и Thread. Для z/OS данный атрибут используется только для кластерного receiver-канала. При использовании типа Process, можно получить более высокую надежность (изоляция и авторизация каждого канала), но тип Thread повышает производительность. #### Закладка Exits Указываются channel-exit программы канального агента (MCA), написанные на языке C [8]. Под Windows обращение записывается как dllname(functionname) где dllname определяет имя Dynamic Link Library без суффикса ".dll". Максимальная длина строки - 40 символов. Send Exit Name - имя программы, которая выполняется, когда сообщение было забрано из трансмиссионной очереди, но процесс передачи еще не начинался; Send Exit Data - данные, которые можно передать программе, указанной в атрибуте Send Exit Name; Receive Exit Name - имя программы, которая выполняется, когда сообщение получено, но еще не помещено в очередь назначения; Receive Exit Data - данные, которые можно передать программе, указанной в атрибуте Receive Exit Name; Security Exit Name - имя программы, которая выполняется, когда в процессе установки соединения между парой каналов производится процесс идентификации. Примеры использования механизма Security Exit доступны по адресу http://www.redbooks.ibm.com/redbooks/SG245306.html, а также в программе cryptexit с http://www.mqseries.net/ Security Exit Data - данные, которые можно передать программе, указанной в атрибуте Security Exit Name; Message Exit Name - имя программы, которая выполняется, когда сообщение будет помещено в очередь. Используя данный атрибут можно указать, например, имя программы для помещения содержимого сообщения в файл. Пример данной программы приведен в лекции 11. Не поддерживается для канала server-connection. Message Exit Data - данные, которые можно передать программе, указанной в атрибуте Message Exit Name. Механизмы Send exit и Receive exit можно использовать как для сжатия, так и для шифрования сообщений. Сообщения, поступающие в трансмиссионную очередь перед отправкой будут сжиматься или шифроваться с помощью программы, указанной в атрибуте Send Exit Name, а после доставки на удаленный менеджер перед помещением в очередь будут приведены в исходное состояние с помощью программы, указанной в атрибуте Receive Exit Name. Следует отметить, что события Send Exit и Receive Exit возникают также при инициализации старта и остановки каналов, а также при передаче служебных контрольных сообщений. #### Закладка LU 6.2 Свойства, приведенные в закладке LU 6.2 используются только на платформах OS/2, Tandem NSK и z/OS. Особого интереса она не представляет, поэтому подробно на ней останавливаться не стоит. Mode Name - используется для LU 6.2 соединений (OS/2, Tandem NSK и z/OS). Дает дополнительное определение параметров подключения сессии. Может содержать до 8 символов и цифр. Не используется для receiver и server connection каналов. TP Name - имя транзакционной программы, которая должна быть запущена. User ID - имя пользователя, которое может быть применено агентами MCA для инициализации сессии безопасности SNA. User ID не является пользователем, от имени которого будет помещено сообщение в очередь. Применяется только для sender, server, requester или server connection каналов. #### Закладка Retry Short Retry Count - определяет количество попыток установления связи с каналом-партнером. Используется для sender, cluster-sender, server и cluster-receiver каналов и может быть в пределах от 0 до 999 999 999. Short Retry Interval - определяет интервал времени в секундах, в течение которого канал будет ждать прежде чем попытаться установить соединение после неудачной попытки. Может располагаться в пределах от 0 до 999 999. Long Retry Count - определяет дополнительное количество попыток установления связи с каналом-партнером. Используется для sender, cluster-sender, server и cluster-receiver каналов и может быть в пределах от 0 до 999 999 999. Long Retry Interval - то же, что и Short Retry Interval, только для атрибута Long Retry Count. #### Закладка SSL Работа с механизмом защиты SSL (Security Socket Layer) подробно описана в лекции 13 (Шаг 8 - Настройка SSL свойств для каналов WebSphere MQ). Формы для создания receiver - канала (рис. 3.8) и requester - канала (рис. 3.9) практически ничем не отличаются от форм sender и server- каналов, за исключением закладки Message Retry. #### Закладка Message Retry Message retry count - количество попыток, совершаемое каналом, чтобы поместить сообщение в очередь прежде чем принять решение о том, что это сделать невозможно. Актуально в случае, если атрибут Message-retry exit name не заполнен. Message retry interval - определяет минимальный интервал времени в миллисекундах, который должен пройти прежде чем канал сделает повторную попытку поместить сообщение в очередь. Может быть в пределах от 0 до 999 999 999. Message-retry exit name - имя программы, которая может быть запущена, если с первого раза не удалось поместить сообщение в очередь. Программа может использовать в своей работе атрибут Message retry count. Message-retry exit user data - данные, которые могут быть переданы программе, указанной в атрибуте Message-retry exit name. Атрибуты, которые не могут быть использованы, в этих формах ввести невозможно. Так, например, для receiver - канала не имеет значения атрибут Connection Name. Это говорит о том, что существует возможность использовать один receiver - канал в паре со многими sender - каналами, расположенными на других менеджерах очередей. Такая схема работы не самая удачная, поскольку снижается контроль и управление потоками данных. Рис. 3.8. Форма для заполнения свойств receiver - канала Для requester - канала атрибут Connection Name является обязательным, поскольку используется в процессе установления соединения при получении запроса на подключение от удаленного менеджера. Пожалуй, это единственное существенное отличие его от receiver - канала. Рис. 3.9. Форма для заполнения свойств receiver - канала

© Макушкин В.А., Володичев Д.С.. Все права защищены.