Опубликован: 14.12.2004 | Уровень: для всех | Доступ: платный | ВУЗ: Компания IBM
Лекция 5:

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

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >

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

Рассмотрим ситуацию, предполагающую наличие одного сервера с установленным менеджером очередей и множества рабочих станций, которые должны доставлять или получать сообщения от этого менеджера. Предположим, что для каждой рабочей станции на менеджере очередей создана своя локальная очередь для получения сообщений 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&amp;amp;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

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

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

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >
Вадим Горячев
Вадим Горячев
Россия
Artem Bardakov
Artem Bardakov
Россия

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.9936104051280watchdog( )../bootstrap.inc:0
23.9939104053784module_invoke( )../bootstrap.inc:967
33.9939104055640call_user_func_array ( )../module.inc:462
43.9939104055976devel_watchdog( )../module.inc:462
53.9940104056824decode_entities( )../devel.module:382
63.9940104058744drupal_error_handler( )../devel.module:340
73.9940104062352watchdog( )../common.inc:663
83.9941104064456module_invoke( )../bootstrap.inc:967
93.9941104066312call_user_func_array ( )../module.inc:462
103.9941104066648devel_watchdog( )../module.inc:462
113.9941104067344decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.9936104051280watchdog( )../bootstrap.inc:0
23.9939104053784module_invoke( )../bootstrap.inc:967
33.9939104055640call_user_func_array ( )../module.inc:462
43.9939104055976devel_watchdog( )../module.inc:462
53.9940104056824decode_entities( )../devel.module:382
63.9940104058744drupal_error_handler( )../devel.module:340
73.9940104062352watchdog( )../common.inc:663
83.9941104064456module_invoke( )../bootstrap.inc:967
93.9941104066312call_user_func_array ( )../module.inc:462
103.9941104066648devel_watchdog( )../module.inc:462
113.9941104067344decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.9936104051280watchdog( )../bootstrap.inc:0
23.9939104053784module_invoke( )../bootstrap.inc:967
33.9939104055640call_user_func_array ( )../module.inc:462
43.9939104055976devel_watchdog( )../module.inc:462
53.9940104056824decode_entities( )../devel.module:382
63.9948104058936drupal_error_handler( )../devel.module:340
73.9948104062624watchdog( )../common.inc:663
83.9948104064728module_invoke( )../bootstrap.inc:967
93.9948104066584call_user_func_array ( )../module.inc:462
103.9948104066920devel_watchdog( )../module.inc:462
113.9949104067696decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.9936104051280watchdog( )../bootstrap.inc:0
23.9939104053784module_invoke( )../bootstrap.inc:967
33.9939104055640call_user_func_array ( )../module.inc:462
43.9939104055976devel_watchdog( )../module.inc:462
53.9940104056824decode_entities( )../devel.module:382
63.9948104058936drupal_error_handler( )../devel.module:340
73.9948104062624watchdog( )../common.inc:663
83.9948104064728module_invoke( )../bootstrap.inc:967
93.9948104066584call_user_func_array ( )../module.inc:462
103.9948104066920devel_watchdog( )../module.inc:462
113.9949104067696decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.9955104051824watchdog( )../bootstrap.inc:0
23.9955104053928module_invoke( )../bootstrap.inc:967
33.9955104055784call_user_func_array ( )../module.inc:462
43.9955104056120devel_watchdog( )../module.inc:462
53.9956104056824decode_entities( )../devel.module:382
63.9956104058744drupal_error_handler( )../devel.module:340
73.9956104062352watchdog( )../common.inc:663
83.9956104064456module_invoke( )../bootstrap.inc:967
93.9956104066312call_user_func_array ( )../module.inc:462
103.9956104066648devel_watchdog( )../module.inc:462
113.9957104067344decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.9955104051824watchdog( )../bootstrap.inc:0
23.9955104053928module_invoke( )../bootstrap.inc:967
33.9955104055784call_user_func_array ( )../module.inc:462
43.9955104056120devel_watchdog( )../module.inc:462
53.9956104056824decode_entities( )../devel.module:382
63.9956104058744drupal_error_handler( )../devel.module:340
73.9956104062352watchdog( )../common.inc:663
83.9956104064456module_invoke( )../bootstrap.inc:967
93.9956104066312call_user_func_array ( )../module.inc:462
103.9956104066648devel_watchdog( )../module.inc:462
113.9957104067344decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.9955104051824watchdog( )../bootstrap.inc:0
23.9955104053928module_invoke( )../bootstrap.inc:967
33.9955104055784call_user_func_array ( )../module.inc:462
43.9955104056120devel_watchdog( )../module.inc:462
53.9956104056824decode_entities( )../devel.module:382
63.9961104058936drupal_error_handler( )../devel.module:340
73.9961104062624watchdog( )../common.inc:663
83.9962104064728module_invoke( )../bootstrap.inc:967
93.9962104066584call_user_func_array ( )../module.inc:462
103.9962104066920devel_watchdog( )../module.inc:462
113.9962104067696decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.9955104051824watchdog( )../bootstrap.inc:0
23.9955104053928module_invoke( )../bootstrap.inc:967
33.9955104055784call_user_func_array ( )../module.inc:462
43.9955104056120devel_watchdog( )../module.inc:462
53.9956104056824decode_entities( )../devel.module:382
63.9961104058936drupal_error_handler( )../devel.module:340
73.9961104062624watchdog( )../common.inc:663
83.9962104064728module_invoke( )../bootstrap.inc:967
93.9962104066584call_user_func_array ( )../module.inc:462
103.9962104066920devel_watchdog( )../module.inc:462
113.9962104067696decode_entities( )../devel.module:382