Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
WebSphere MQ. Менеджеры очередей
|
|||
|---|---|---|---|
|
#18+
Нужно разместить сообщение в очередь на одном менеджере и передать в очередь другого менеджера администратор 1 crtmqm qm.apple администратор 2 crtmqm -q qm.orange strmqm strmqm qm.apple runmqsc qm.apple Создадим локальную очередь в apple (получатель) для получения сообщений define qlocal(q1) end runmqsc qm.apple define listener(qm.apple.listener) trptype(TCP) port(30000) start listener(qm.apple.listener) end runmqsc qm.apple alter listener(qm.apple.listener) trptype(tcp) ipaddr(127.0.0.1) end Создание транспортной очереди в orange (отправитель) runmqsc qm.orange define qlocal (qm.orange.tq) usage(xmitq) end создание удаленной очереди в orange runmqsc define qremote(q1) rname(q1) rqmname(qm.apple) xmitq(qm.orange.tq) end runmqsc qm.orange define channel (qm.orange.qm.apple) chltype (sdr) conname ('127.0.0.1(30000)') xmitq (qm.orange.tq) trptype (tcp) end runmqsc qm.apple define channel (qm.orange.qm.apple) chltype (RCVR) trptype (TCP) end запуск канала runmqsc qm.orange start channel(qm.orange.qm.apple) end Теперь я хочу отправить сообщение в apple. Заношу сообщение в определение удаленной очереди на orange ./amqsput q1 и далее получаю ошибку Оба администратора очередей созданы в одной виртуальной машине (ОС Centos) Что я неправильно делаю при проверке результата ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2012, 17:19 |
|
||
|
WebSphere MQ. Менеджеры очередей
|
|||
|---|---|---|---|
|
#18+
shax, Для начала, какие ошибки выдаются при выполнении amqsput ? Там возможны варианты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2012, 09:43 |
|
||
|
WebSphere MQ. Менеджеры очередей
|
|||
|---|---|---|---|
|
#18+
Евгений Хабаров, Евгений Хабаров, положить сообщение в очередь получается если указать имя очереди как Q1 (т.е. Q прописывать в большом регистре, хотя у меня она называется и на orange (удаленная) и на apple (локальная) q1 (q - в малом регистре) ). Но я не знаю влияет ли на что нибудь регистр букв, указал наугад т.к. уже не знаю в чем дело. Проверку результата я делаю так: Захожу от root su – root Переключаюсь на mqm su – mqm Захожу в каталог где у меня установлена MQ cd /opt/mqm/bin Запускаю отправитель (orange) ./strmqm Запускаю MQSC для orange ./runmqsc Запускаю канал отправителя start channel(qm.orange.qm.apple) end Перехожу в каталог с примерами программ cd /opt/mqm/samp/bin Размещаю сообщение в удаленную очередь на orange ./amqsput Q1 Сообщение заносится в очередь \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ вообще имя очереди q1, но при написании в малом регистре (./amqsput q1) выпадает следующая ошибка Sample AMQSPUT0 start target queue is q1 MQOPEN ended with reason code 2085 unable to open queue for output Sample AMQSPUT0 end \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ Далее тоже самое для apple, возвращаюсь в каталог с MQ cd /opt/mqm/bin запускаю получатель (apple) ./strmqm qm.apple ./runmqsc qm.apple запускаю канал получателя start channel(qm.orange.qm.apple) end Перехожу в каталог с примерами программ cd /opt/mqm/samp/bin И хочу получить сообщение из очереди ./amqsget Q1 (здесь тоже указываю q1 в большом регистре т.к. имена удаленной (на orange) и локальной (на apple) очередей одинаковые) И получаю ошибку Sample AMQSGET0 start MQOPEN ended with reason code 2045 unable to open queue for input Sample AMQSGET0 end Попробовал указать при получении сообщения из очереди (на orange - Q1, а на apple - q1) получил ошибку Sample AMQSGET0 start MQOPEN ended with reason code 2085 unable to open queue for input Sample AMQSGET0 end Оба менеджера у меня установлены в одной ОС Centos. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2012, 12:00 |
|
||
|
WebSphere MQ. Менеджеры очередей
|
|||
|---|---|---|---|
|
#18+
shax, Предварительно, код 2045 (MQRC_OPTION_NOT_VALID_FOR_TYPE) говорит о том, что идет обращение к очереди с неподходящими параметрами. Т.к. в вызовах програм нигде не указано к какому менеджеру идет подключение, подозреваю что идет работа с дефолтным менеджером на этой машине. Им может быть любой менеджер. Из за этого может быть и проблема с названиями очередей. Если этот менеджер не apple и не orange, то это может быть какой-то еще менеджер, на котором заведена очередь Q1. Выяснить какой менеджер является дефолтным можно например так: CMDecho DISPLAY QMGR QMNAME | runmqsc Далее, начинаем анализ. По каждой команде хотелось бы видеть результат исполнения (лучше приложить файлом/архивом). Примеры команд привожу для Windows, т.к. Linux-сервера с MQ прямо сейчас под рукой нет. 1. Выясняем версию и фикспак на всякий случайCMD01C:\IBM\WebSphere MQ\tools\c\Samples>dspmqver Name: WebSphere MQ Version: 7.0.1.6 CMVC level: p701-106-110725 BuildType: IKAP - (Production) 2. Получаем список серверов MQ. CMD02C:\IBM\WebSphere MQ\tools\c\Samples>dspmq QMNAME(apple) STATUS(Running) QMNAME(orange) STATUS(Running) 3. Получаем список очередей сервера apple (Пример вывода не привожу) CMD03echo DISPLAY QUEUE(*) | runmqsc apple 4. Получаем список очередей сервера orange (Пример вывода не привожу) CMD04echo DISPLAY QUEUE(*) | runmqsc orange 5. Отправляем сообщение в очередь q1 на сервере orange CMD05amqsput a1 orange 6. Читаем ответ из очереди Q1 на сервере apple CMD06amqsget a1 apple Если отправка сообщения отработает без ошибок, а в конечной очереди сообщение не появится, будем искать дальше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2012, 14:01 |
|
||
|
WebSphere MQ. Менеджеры очередей
|
|||
|---|---|---|---|
|
#18+
Евгений Хабаров, Вначале хотел бы у вас уточнить следующий момент. MQ у меня установлена в Centos на VirtualBox. В виртуальной машине у меня установлена ОДНА OC Centos. Т.е. оба менеджера созданы и должны передавать друг другу сообщение в одной системе. Изучал много примеров, но во всех примерах отправитель находится на одном компьютере, а получатель на другом (мне же нужно чтобы передача осуществлялась в одной системе). Свой код писал как раз по этим примерам. Поэтому в связи со всем вышесказанным хотелось бы уточнить это вообще возможно организовать передачу сообщения так как нужно мне (в одной системе). Один знакомый, косвенно связанный с WebSphere мне сказал что такой вариант возможен если один менеджер будет работать на одном порту, а второй на другом. Но как это сделать он объяснить не смог. В тех примерах которые я изучал (и соответственно у меня в коде) порт указывается на канале отправителя и на получателе запросов (кстати он должен быть у них одинаковым). Вы пишите «Предварительно, код 2045 (MQRC_OPTION_NOT_VALID_FOR_TYPE) говорит о том, что идет обращение к очереди с неподходящими параметрами.» Т.е. вы имеете ввиду что я неправильно указал параметры локальной очереди на получателе? Но при создании локальной очереди указывается только то что это локальная очередь и ее имя, насколько я понял изучая примеры. (мой код «define qlocal(q1)»). «подозреваю что идет работа с дефолтным менеджером на этой машине. Им может быть любой менеджер.» Насколько я понимаю дефолтный менеджер - это менеджер по умолчанию. У меня это отправитель (orange). Других менеджеров кроме apple и orange я не создавал. «Т.к. в вызовах програм нигде не указано к какому менеджеру идет подключение» Не совсе понял этот момент. Когда я запускаю получатель (apple) я ведь указываю его имя, при запуске отправителя (orange) имя не указывал потому что это менеджер по умолчанию. И я так и не понял влияет ли регистр букв на работу очередей. Есть ли разниц между q1 и Q1. Почему вообще когда я ложу сообщение в очередь и указываю имя очереди q1 выпадает ошибка (2085), а при указании имени как Q1 сообщение заносится в очередь хотя у меня очередь названа q1 (на обоих менеджерах). Если вас не затруднит разъясните пожалуйста эти вопросы. В администрировании MQ я новичек, а в примерах в основном ответы на простые вопросы особо не разъясняются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 08:39 |
|
||
|
WebSphere MQ. Менеджеры очередей
|
|||
|---|---|---|---|
|
#18+
shax, Да, на одной ОС можно создать несколько менеджеров MQ. Да, даже в пределах одной ОС менеджеры MQ можно объединить между собой. Порт(ы), через которые возможно подключение к менеджеру задаются с помощью объектов LISTENER. Для консоли команд (runmqsc) действует следующее правило: Если имена объектов указываются без кавычек, они приводятся к верхнему регистру. Если имена объектов указываются в кавычках, то они будут использоваться "как есть". В прикладных программах нужно указывать имена объектов с учетом регистра. Внимательно посмотрел скрипты, там есть несколько ошибок. Во вложении архив с рабочими скриптами. Тестировал на Windows, но должен работать везде. Каналы передачи созданы в обе стороны, хотя для данного теста достаточно одной пары SDR/RCVR. cre_apple.cmd, cre_orange.cmd - создание менеджера, запуск менеджера, запуск скриптов создания объектов cre_apple.txt, cre_orange.txt - скрипты создания объектов run_tests.cmd - запуск команд amqsput и amqsget Рекомендую освоить WebSphere MQ Explorer. Это GUI-программа, которая позволяет управлять менеджерами MQ. Хорошо помогает в процессе обучения и работы, хотя некоторые вещи иногда проще сделать из командной строки. По теории рекомендую почитать книжку : WebSphere MQ V6. Фундаментальные основы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 11:09 |
|
||
|
WebSphere MQ. Менеджеры очередей
|
|||
|---|---|---|---|
|
#18+
Евгений Хабаров, спасибо на моей Centos все запустилось. Насколько я понял на передачу сообщений между администраторами в одной ОС повлияло именно указание триггерной очереди, т.к. в остальном мой код совпадает с вашим. define qlocal('orange.dead.queue') - это я так понял очередь для недоставленных сообщений. define qlocal('orange.defxmit.queue') - а для чего нужна эта очередь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2012, 13:26 |
|
||
|
WebSphere MQ. Менеджеры очередей
|
|||
|---|---|---|---|
|
#18+
shax, Помнится, что были ошибки/опечатки. Триггер же только автоматизирует запуск канала. Для проверки можно попробовать прогнать исходные скрипты, просто заключив имена объектов в одинарные кавычки для сохранения регистра имен объектов. DEFXMIT - задает очередь передачи по умолчанию, если вдруг она не будет указана явно. Лучше чтобы такая очередь была, помогает отлавливать ошибки конфигурирования DQM. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 12:56 |
|
||
|
|

start [/forum/topic.php?fid=43&fpage=38&tid=1601573]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
2ms |
| others: | 280ms |
| total: | 415ms |

| 0 / 0 |
