» Главная
eXcode.ru » Статьи » Другие » Интеграция приложений на основе WebSphere MQ
» Новости
» Опросы
» Файлы
» Журнал



Пользователей: 0
Гостей: 5





Создание интерфейсов передачи сообщений. Триггеринг




Состояние каналов. Создание интерфейсов передачи сообщений

Как говорилось в предыдущей лекции, сообщения передаются с помощью каналов, с одинаковыми именами, расположенными как на одном, так и на другом менеджере. Для управления процессом старта каналов существует специальная служба, которая называется Channel initiator. На платформе Windows NT она запускается автоматически при старте менеджера с помощью WebSphere MQ Explorer. На других платформах она запускается с помощью команды runmqchi (на AS/400 - strmqmchi). На менеджере, отправляющем сообщение, должен быть создан канал отправитель, на менеджере получателе, соответственно, получатель. Рассмотрим подробнее работу пар каналов.

Sender => Receiver

Наиболее распространенная пара. Sender канал инициирует соединение с receiver каналом, затем передает сообщения.

Server => Receiver

В данном случае server канал выполняет роль sender канала. Пара имеет право на существование, но лучше использовать связку Sender => Receiver.

Server => Requester

В этой паре requester канал инициирует соединение, затем server канал начинает передачу данных.

Sender => Requester

Requester канал инициирует соединение в случае разрыва с sender каналом. Sender канал в свою очередь инициирует соединение с requester каналом, и только после этого начинается процесс передачи.

Каналы могут находиться в следующих состояниях.

Initialising - WebSphere MQ делает попытку произвести старт канала.

Starting - канал начал процесс старта и ждет установки соединения (активации слота).

Binding - после активации слота идет попытка установления соединения и передача данных инициации между каналами.

Requesting - requester канал ждет ответа от sender канала.

Running - состояние при котором либо идет передача данных, либо канал отправитель ждет сообщений из трансмиссионной очереди. Единственное состояние каналов отправителей, при котором возможна передача данных.

Paused - канал ожидает истечения времени, указанного в атрибуте Message retry interval.

Stopping - канал переходит в это промежуточное состояние в процессе остановки канала командой MQSC stop channel, либо при возникновении какой-либо ошибки.

Retrying - ожидание очередной попытки старта канала с помощью Channel initiator.

Stopped - канал остановлен. Стартовать его можно либо с помощью WebSphere MQ Explorer либо с помощью команды MQSC start channel. Ниже мы приведем подробную инструкцию для старта каналов.

Inactive - состояние канала, говорящее о том, что либо он никогда не был стартован, либо истекло время, указанное в атрибуте Disconnect Interval для канала отправителя. Для канала получателя это нормальное состояние, так как он переходит в состояние Running при инициации связи со стороны канала отправителя.

Пиктограммы состояния каналов

Состояние канала отображается в WebSphere MQ Explorer пиктограммами. Одной пиктограмме может соответствовать несколько состояний канала.


neutral (нейтральное). Соответствует состоянию Inactive


running (стартован). Соответствует только состоянию Running.


stopped (остановлен). Соответствует состоянию Stopped.


alert (неопределенное состояние). Соответствует состояниям Binding, Requesting, Retrying, Stopping.


warning (предупреждающее состояние). Обычно возникает при появлении ошибок.

Как правило, причиной остановки канала может быть только команда. Причин возникновения неопределенного состояния может быть несколько: разрыв связи, неправильный IP адрес в каналах отправителях или в requester, попытка стартовать канал, когда канал на другом конце остановлен или находится в неопределенном состоянии и пр. Самое главное, что нужно делать, чтобы избежать ошибок, это правильно заполнять атрибуты каналов и удаленных локальных очередей и контролировать работу каналов на обоих менеджерах. Напомним, что главным определяющим атрибутом канала отправителя является Disconnect Interval, по истечении которого канал переходит в состояние Inactive, если в соответствующей трансмиссионной очереди не будет новых сообщений. Для возобновления передачи нужно либо вручную стартовать канал, либо настроить автоматический старт.

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

Предположим, нам нужно передать сообщения от одного менеджера QM_Win2000_REP, расположенного на платформе NT, имеющего IP адрес 198.32.100.26, порт для службы listener - 1415 к другому менеджеру QM_HPUX, расположенному на платформе UNIX с адресом 198.32.100.16, порт для службы listener - 1421. Подключим менеджер QM_HPUX для удаленного управления с помощью WebSphere MQ Explorer. Создадим объекты на платформе UNIX:

  1. локальная очередь Win2000_REP_HPUX.Q - в нее будет доставляться сообщение (рис. 4.1);
  2. receiver канал Win2000_REP_HPUX.CH (рис. 4.2).

Создадим объекты на менеджере QM_Win2000_REP:

  1. трансмиссионная очередь Win2000_REP_HPUX_TRANS.TQ (рис. 4.3);
  2. удаленная локальная очередь Win2000_REP_HPUX_REMOT.RQ (рис. 4.4), имеющая атрибуты:

    • Remote Queue Name - Win2000_REP_HPUX.Q;
    • Remote Queue Manager Name - QM_HPUX;
    • Transmission Queue Name - Win2000_REP_HPUX_TRANS.TQ;
  3. sender канал Win2000_REP_HPUX.CH (рис. 4.5), имеющий атрибуты:
    • Connection Name - 198.32.100.16(1421);
    • Transmission Queue - Win2000_REP_HPUX_TRANS.TQ;

Локальная очередь Win2000_REP_HPUX.Q
Рис. 4.1. Локальная очередь Win2000_REP_HPUX.Q

Receiver канал Win2000_REP_HPUX.CH
Рис. 4.2. Receiver канал Win2000_REP_HPUX.CH

Трансмиссионная очередь Win2000_REP_HPUX_TRANS.TQ
Рис. 4.3. Трансмиссионная очередь Win2000_REP_HPUX_TRANS.TQ

Удаленная локальная очередь Win2000_REP_HPUX_REMOT.RQ
Рис. 4.4. Удаленная локальная очередь Win2000_REP_HPUX_REMOT.RQ

sender канал Win2000_REP_HPUX.CH
Рис. 4.5. sender канал Win2000_REP_HPUX.CH

Поместим тестовое сообщение в локальную удаленную очередь Win2000_REP_HPUX_REMOT.RQ с помощью программы amqsput.exe, входящей в пакет демонстрационных программ, введя в командной строке:

amqsput Win2000_REP_HPUX_REMOT.RQ QM_Win2000_REP

Далее вводим текст сообщения:

Тестовое сообщение от QM_Win2000_REP.

Работа программы amqsput.exe показана на рис. 4.6.

Работа программы amqsput.exe
увеличить изображение
Рис. 4.6. Работа программы amqsput.exe

После нажатия клавиши "Enter" сообщение должно попасть в трансмиссионную очередь Win2000_REP_HPUX_TRANS.TQ. Оно будет находиться в ней до тех пор, пока sender канал не будет стартован. После старта канала сообщение будет доставлено в очередь Win2000_REP_HPUX.Q на менеджер QM_HPUX (рис. 4.7).

Просмотр сообщения через Message Browser
увеличить изображение
Рис. 4.7. Просмотр сообщения через Message Browser

Соединение типа клиент-сервер

Рассмотрим ситуацию, предполагающую наличие одного сервера с установленным менеджером очередей и множества рабочих станций, которые должны доставлять или получать сообщения от этого менеджера. Предположим, что для каждой рабочей станции на менеджере очередей создана своя локальная очередь для получения сообщений FROM_A1.Q, FROM_A2.Q и так далее в зависимости от количества станций. Также созданы локальные очереди для отправки сообщений TO_A1.Q, TO_A2.Q и так далее. В данном случае целесообразно использовать соединение типа клиент-сервер, которое не требует установки серверной части WebSphere MQ на рабочей станции. На ней можно установить только клиентскую часть, которая присутствует в комплекте поставки. Кроме этого, клиентская часть доступна по адресу в Интернет: http://www14.software.ibm.com/webapp/download/search.jsp?go=y&rs=wsmqclient.

Подключение рабочей станции производится с помощью канала типа Server Connection, создаваемого на менеджере очередей. Форма для создания канала с помощью WebSphere MQ Explorer представлена на рис.4.8 и имеет закладки General, Extended, MCA, Exits и SSL. Атрибуты, вводимые в этих закладках описаны в лекции 3. Основным атрибутом является Channel Name. Кроме имени канала никакие другие атрибуты не играют роли в процессе подключения рабочей станции.

Форма создания канала Server Connection
Рис. 4.8. Форма создания канала Server Connection

Кроме создания канала на менеджере очередей нужно разрешить учетной записи рабочей станции подключение к менеджеру и дать соответствующие права на очереди, с которыми рабочая станция будет работать. Предположим, что станция имеет учетную запись (имя пользователя) station1 в домене petersburg и должна работать с локальными очередями FROM_A1.Q и TO_A1.Q на менеджере QM_Win2000 с IP адресом 198.32.100.26 через канал CHANNEL_BY_A1. Тогда на сервере нужно выполнить команды авторизации

SETMQAUT -m QM_Win2000 -t qmgr 
         -p station1@petersburg +connect
SETMQAUT -m QM_Win2000 -n FROM_A1.Q -t queue
         -p station1@petersburg +all
SETMQAUT -m QM_Win2000 -n TO_A1.Q -t queue 
         -p station1@petersburg +all
    

Первая команда дает права пользователю с учетной записью station1@petersburg на подключение к менеджеру QM_Win2000, вторая и третья разрешают производить все операции с очередями FROM_A1.Q и TO_A1.Q соответственно. Просмотреть права данной учетной записи можно с помощью команд

DSPMQAUT -m QM_Win2000 -t qmgr 
         -p station1@petersburg
DSPMQAUT -m QM_Win2000 -n FROM_A1.Q -t queue
         -p station1@petersburg
DSPMQAUT -m QM_Win2000 -n TO_A1.Q -t queue 
         -p station1@petersburg
    

На этом действия по созданию соединения клиент-сервер на сервере завершаются. На рабочей станции необходимо создать системную переменную с именем MQSERVER как показано на рис.4.9.

Параметры переменной MQSERVER
Рис. 4.9. Параметры переменной MQSERVER

Теперь с рабочей станции можно послать сообщение в очередь FROM_A1.Q на удаленный менеджер QM_Win2000 с помощью программы amqsputc.exe, входящей в комплект поставки в качестве примера:

amqsputc FROM_A1.Q <text_message.txt

где text_message.txt - файл, содержащий текст сообщения.

Считать сообщения из очереди можно с помощью программы amqsgetc.exe:

amqsgetc TO_A1.Q

при условии, что в этой очереди они есть.

Вполне вероятно, что рабочие станции в своей работе могут использовать только одну очередь для отправки и получения сообщений. В этом случае необходимо создать такую программу, которое позволяла бы корректно разбирать и отправлять сообщения в зависимости от имен рабочих станций и/или других параметров.

Процессы WebSphere MQ, триггеринг и автоматический старт каналов

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

Процесс WebSphere MQ это объект, содержащий информацию о прикладной программе, которая может быть выполнена на определенных условиях при использовании механизма триггеринга. Форма для создания процесса изображена на рис. 4.10.

Форма для создания процесса WebSphere MQ
Рис. 4.10. Форма для создания процесса WebSphere MQ

Process Definition Name - имя процесса. Уникально в пределах одного менеджера и должно отличаться от его имени. Может совпадать с именами других объектов менеджера.

Description - описание процесса.

Application Type - тип приложения. Зависит от операционной системы, на которой установлен менеджер очередей.

Application Identifier - имя выполняемой программы с указанием пути.

Environment Data - данные, которые могут быть переданы сервису Trigger Monitor.

User Data - данные, которые могут быть переданы выполняемой программе.

Для запуска процесса необходимы условия:

  • сообщения поступают в очередь;
  • приоритет сообщения не ниже приоритета, указанного в атрибуте Trigger Message Priority;
  • количество сообщений в очереди находится в соответствии с атрибутом Trigger Type;
  • существует очередь инициализации;
  • атрибут Trigger Control установлен в значение On;
  • существует и стартована служба сервиса WebSphere MQ Trigger monitor, в параметрах которой указана соответствующая очередь инициализации или запущена программа runmqtrm.

Предположим, что необходимо информировать пользователя о приходе каждого сообщения в очередь FOR_USER_INF.Q. Рассмотрим шаги для реализации поставленной задачи:

  1. Создать очередь инициализации for_user_init.
  2. Создать файл c: emp rig.bat, содержащий строку

    net send user1 Пришло сообщение в очередь FOR_USER_INF.Q
    

    который будет посылать сообщения пользователю user1,

  3. Создать процесс NET_SEND.P с атрибутами:
    • Process Definition Name - NET_SEND.P;
    • Application Type - Windows NT;
    • Application Identifier - c: emp rig.bat.
  4. Создать локальную очередь FOR_USER_INF.Q с атрибутами
    • Queue Name - FOR_USER_INF.Q;
    • Trigger Control - On;
    • Trigger Type - Every;
    • Trigger Depth - 1;
    • Trigger Message Priority - 0;
    • Initiation Queue Name - for_user_init ;
    • Process Name - NET_SEND.P.
  5. Создать службу сервиса WebSphere MQ Trigger Monitor:
    • Запустить утилиту создания и управления сервисами WebSphere MQ;
    • Вызвать контекстное меню, правой кнопкой мыши щелкнув по имени менеджера, выбрать пункт Create, далее Trigger Monitor;
    • Ввести имя очереди инициализации - for_user_init;
    • После нажатия на кнопку OK в правой части консоли WebSphere MQ Services появится созданный объект Trigger Monitor (рис. 4.11);

      Консоль WebSphere MQ Services
      увеличить изображение
      Рис. 4.11. Консоль WebSphere MQ Services

    • Выполнить старт Trigger Monitor, нажав на кнопку "Старт", расположенную на панели управления.
  6. Поместить тестовое сообщение в очередь FOR_USER_INF.Q и убедиться, что сетевое сообщение с текстом "Пришло сообщение в очередь FOR_USER_INF.Q" отправлено пользователю user1.

    Вместо создания службы сервиса WebSphere MQ Trigger Monitor можно выполнить программу runmqtrm. Синтаксис команды

    runmqtrm -q for_user_init

В этом случае процесс NET_SEND.P будет выполняться только тогда, когда программа runmqtrm запущена.

Использование механизма триггеринга для автоматического старта каналов

Используя механизм триггеринга можно сделать так, чтобы каналы отправители, перешедшие в нейтральное состояние Inactive в результате истечения времени, указанного в атрибуте Disconnect Interval автоматически переходили в состояние Running при появлении в соответствующей трансмиссионной очереди сообщения. Для этого существует два способа: с использованием процесса и с использованием системной очереди инициализации. Рассмотрим вариант с использованием процесса.

Для каждой трансмиссионной очереди нужно создать:

  1. очередь инициализации;
  2. процесс и в качестве атрибута процесса User Data указать имя канала отправителя, который передает данные, поступающие в эту трансмиссионную очередь;
  3. в трансмиссионной очереди установить атрибуты
    • Trigger Control - On;
    • Trigger Type - First;
    • Trigger Depth - 1;
    • Trigger Message Priority - 0;
    • Initiation Queue Name - имя очереди инициализации созданной в п.1;
    • Process Name - имя процесса, созданного в п.2.

Теперь рассмотрим второй способ автоматического старта канала отправителя без использования процессов. Для реализации второго способа требуется лишь установить атрибуты трансмиссионной очереди:

  • Trigger Control - On;
  • Trigger Type - First;
  • Trigger Depth - 1;
  • Trigger Message Priority - 0;
  • Trigger Data - имя канала отправителя, который передает данные, поступающие в эту трансмиссионную очередь;
  • Initiation Queue Name - имя системной очереди инициализации SYSTEM.CHANNEL.INITQ.

Имя системной очереди инициализации может быть использовано в атрибуте Initiation Queue Name каждой трансмиссионной очереди.

В процессе рестарта каналов возможна ситуация, когда транзакция по передаче сообщения еще не завершилась, а канал получил команду на остановку. В таком случае при рестарте каналов сообщение может быть передано с принудительным завершением транзакции либо остаться в исходящей очереди посредством отката транзакции. Остановка канала может осуществляться как с прерыванием и принудительным завершением транзакции, так и без прерывания. Во втором случае транзакция успешно закрывается, что гарантирует отсутствие в трансмиссионной очереди сообщений с признаком незавершенной транзакции (uncommitted messages). Последующий старт канала облегчается отсутствием необходимости выполнения команды resolve channel с вариантами обработки uncommitted сообщений. Операции по рестарту каналов можно производить с помощью команд MQSC и с помощью WebSphere MQ Explorer, выполняя соответствующие пункты контекстного меню для каждого канала. Рассмотрим процедуру рестарта каналов с помощью WebSphere MQ Explorer [9].

  1. Остановить канал отправитель, выполнив пункт Stop контекстного меню. При выполнении данного меню появится форма, изображенная на рис.4.12, имеющая следующие параметры:

    Force interruption of current message batch - прерывание и принудительное завершение транзакции. Если выставить флажок в этом параметре, то становится доступным параметр Allow process/thread termination позволяющий принудительно остановить процесс передачи данных. Рекомендуется не использовать эти два параметра, чтобы перед остановкой канала обеспечить передачу сообщений, по которым транзакция была уже открыта.

    New state - указывается состояние канала, в которое он будет переведен после остановки. Может иметь два значения Inactive и Stopped.

    Параметры в секции Filter (Only stop channels from this remote queue manager и Only stop channels from this remote connection) используются только для z/OS.

    Остановка канала
    Рис. 4.12. Остановка канала

  2. Остановить канал получатель.
  3. Выполнить пункт контекстного меню Reset для канала получателя, выставив значение Message Sequence Number в единицу.
  4. Стартовать канал получатель при помощи контекстного меню Start.
  5. Выполнить пункт контекстного меню Reset для канала отправителя, выставив значение Message Sequence Number в единицу (рис.4.13).

    Выравнивание счетчика сообщений
    Рис. 4.13. Выравнивание счетчика сообщений

  6. Если использовался способ остановки с прерыванием транзакции, то выполнить пункт контекстного меню Resolve и выбрать метод обработки сообщений, для которых транзакция не завершилась (рис.4.14). Commit - передать сообщения, Back out - выполнить откат транзакции.

    Метод обработки сообщений с незавершенной транзакцией
    Рис. 4.14. Метод обработки сообщений с незавершенной транзакцией

  7. Выполнить пункт контекстного меню Ping для канала отправителя с целью проверки установления соединения с каналом получателем. Данный пункт выполнять не обязательно, если вы уверены, что связь между каналами может быть установлена.
  8. Выполнить пункт контекстного меню Start для канала отправителя.

Эту процедуру следует выполнить когда устранены все неполадки, приведшие к остановке каналов или переходу в неопределенное состояние. Если в сети существуют проблемы со связью, то канал отправитель может не перейти в состояние running и тогда всю процедуру надо будет вновь повторить сначала. Следует заметить, что WebSphere MQ гарантирует доставку сообщений, но только при правильных настройках всех объектов, участвующих в процессе передачи. Если установить тип сообщений Non Persistent, то никакими силами не удастся восстановить сообщения, например, после перезагрузки компьютера или после остановки менеджера. Материалов, приведенной в данной лекции вполне достаточно для создания и управления интерфейсами передачи и обработки данных.

К началу статьи





Добавил: MadvEXДата публикации: 2006-02-28 01:20:54
Рейтинг статьи:3.00 [Голосов 5]Кол-во просмотров: 9766

Комментарии читателей

Всего комментариев: 24

2019-06-20 20:57:39
HermanFrics
http://bit.ly/2I35AiE - поиск и заказ авиабилетов
http://bit.ly/2WJp67G - Бронирование жилья на Airbnb

2018-07-16 07:10:26
MichaelKEYNC
Interpult Studio поможет вам реализовать эффективную рекламную кампанию и привести клиентов из интернета.
Вы можете использовать любой набор инструментов для решения задач вашего бизнеса|

- Трафиковое продвижение
Трафиковое продвижение – это технология покупки конверсионного трафика, оказывающего влияние на позиции в поисковых системах.
<a href=http://interpult.ru>база каталогов</a>


<a href=https://radikal.ru><img src="https://b.radikal.ru/b06/1807/a1/b958530cdb6e.png"></a>

2018-04-08 08:37:36
ardRoalo
Мебель для детей Щёлково

http://kuhninazakaz.info/page/mebel-dlya-detej-schelkovo/

2018-03-26 15:02:46
FrankBoype
тендерное сопровождение в ярославле


http://ckpiz.info/page/tendernoe-soprovojdenie-v-yaroslavle/

.

2018-03-05 20:54:15
Millardwef
Срочно требуются деньги? Greenmoney
Скорая финансовая помощь.
http://bit.ly/2pJ9LnO - Тинькофф банк кредитная карта

2018-02-28 06:41:00
Gerardagedy
* Кредит по паспорту, без справок и поручителей
* Получить кредит наличными без справок о доходах
* Кредит онлайн — без поручителей и визита в банк
http://bit.ly/2oQUzUu - займ
Погасите кредит без просрочек — пересчитаем проценты по сниженной ставке и вернем вам разницу

2018-02-26 14:45:49
Millardwef
Срочно требуются деньги? деньги в долг кредитная карта
Скорая финансовая помощь.
http://bit.ly/2pJ9LnO - займы онлайн

2017-11-22 14:24:36
Traceev
СЕРВИС ДЛЯ ПРИВЛЕЧЕНИЯ КЛИЕНТОВ ИЗ ИНТЕРНЕТА.
Комплексное интернет-продвижение сайтов без посредников и переплат в одном месте!
Сбор различных баз для продвижения в интернете
Эффективно и недорого. Писать в ICQ 656310373

2017-08-29 23:10:36
Travismer
<a href=http://farmdirect.ru/glicin-mxfp-otzyvy-instrukcija>Препарат Глицин-МХФП - отзывы, инструкция по применению - FarmDirect</a>

2017-06-23 21:09:46
abookzcype
Что значит бесплатные аудиокниги и в чем в действительности их лестные моменты по сопоставлению с бумажными книгами? Как скачать звуковые книги без регистрации? В связи с чем так комфортно скачать бесплатные аудиокниги MP3? Ответы на эти вопросы вы можете обнаружить на нашем проекте. Выражаясь простым языком, аудиокниги – это записи текста, содержимого художественного или публицистического литературного произведения, как правило начитанного человеком (как к примеру, высококлассным артистом) или их командой и записанного на какой угодно акустический носитель. Их банально не нужно читать. Человеческое зрение с самого начала не приспособлено для чтения букв с листа и восприятия покадровых фильмов, по этой причине ключевым положительным моментом использования аудиокниги становится естественность восприятия информации. Они дают возможность оберегать зрение, какое и без того посажено персональным компьютером и интернетом. Скачать аудиокниги очень просто. И по естественным основаниям это приобретает все большую востребованность. Наш портал abookz.net всегда готов предоставить вам возможность скачать аудиокниги бесплатно, без регистрации и смс. Скачать аудиокниги возможно самых разнообразных жанров - фантастика, детективы, трансерфинг, сказки.
Помните, что все представленные в Библиотеке книг онлайн произведения в виде электронных данных являются собственностью автора и представлены исключительно для того, чтобы иметь о них представление






<a href=http://abookz.net>аудиокниги скачать бесплатно аудиокниги скачать бесплатно</a>
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

Каким языком программирования вы чаще пользуйтесь?
C++
27% (108)
Delphi
47% (190)
PHP
8% (34)
Basic
3% (13)
Assembler
3% (11)
ASP
1% (6)
Perl
3% (11)
JAVA
3% (14)
Другой
4% (17)

Проголосовало: 404
Странное какое-то у немцев отношение к компьютерам: на их языке слово "Gluck" означает счастье.
Рейтинг: 6.2/10 (4)
Посмотреть все анекдоты