|
"Устаревшие" сообщения MQ
|
|||
---|---|---|---|
#18+
Здравствуйте всем! На одном сервере A (OC Win Server 2008) установлены WAS 6.1.0.13 и WMQ 5.3.14. Приложение, работающее из-под WAS, кладет в очередь запросов сообщение и читает ответ из очереди ответов. На удаленном сервере B установлен Trigger Service. После появления в очереди запросов сообщения инициируется событие для запуска приложения-обработчика на сервере B. Приложение-обработчик, получив запрос и выполнив определенные действия, кладет ответ в очередь ответов. Из очереди ответов сообщение забирается приложением WAS. Есть проблема. Иногда происходит так, что сообщение из очереди запросов обработчиком сервера B не забирается. Предполагаю, что это происходит из-за кратковременных сбоев в сети. Возможно, успевает сработать триггерное событие, но в этот момент обработчик уже не может забрать сообщение. Затем никакое другое сообщение уже не обрабатывается. В очереди запросов накапливаются сообщения, приложение WAS висит. Срок жизни проблемного сообщения (Expiry) уже истек, но оно не удаляется, и проблему решает только принудительная очистка очереди запросов. Вопрос: Можно ли настроить MQ так, чтобы "устаревшие" сообщения удалялись автоматически? Или генерить повторное событие обработчику, чтобы тот снова пытался забрать сообщение? Почему в этой ситуации другие сообщения из очереди запросов не обрабатываются, хотя в настройках Triggering указан TriggerType=Every? А может, проблема в другом? Где можно покопать? Заранее благодарен С уважением, Семен Попов ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2012, 21:13 |
|
"Устаревшие" сообщения MQ
|
|||
---|---|---|---|
#18+
Semen Popov, Сообщения с истекшим сроком жизни удаляются из очереди автоматически при первой операции MQGET на этой очереди. Т.е. если к очереди никто не обращается, то в ней могут "копиться" сообщения с истекшим Expiry. Если же просроченные сообщения остаются в очереди и после операции MQGET, то либо это бага, либо таки MQ считает что по этим сообщениям не закрыта транзакция, т.е. они не просто "лежат", а находятся в обработке. Триггерные сообщения генерируются в очередь триггера только в том случае, если очередь триггера "слушается", т.е. input use count для этой очереди больше 0. Если я правильно понял, триггер-монитор подключен к менеджеру MQ через клиентский канал. В этом случае может возникать ситуация, когда триггер-монитор считает что подключен к серверу, а с т.з. сервера соединение уже "отвалилось". Тут нужно смотреть настройки TCP/IP на сервере и на клиенте, в частности параметр KeepAlive. Не помню есть ли параметр KeepAlive на канале SRVCONN для версии 5.3. Если есть, нужно проверять его значение. Не мешает проверить версию клиента MQ там, где стоит триггер-монитор. Ну и дальше нужно смотреть протоколы работы триггер-монитора и приложения обработчика, а так же лог-файлы клиента MQ (<MQ_ROOT>\error\AMQERRxx.log). Нужно однозначно определить на каком этапе происходит ошибка. Либо не генерируются сообщения триггеру, и тогда нужно разбираться с триггер-монитором. Или же триггер срабатывает и запускает обработчик и проблемы с получением сообщений уже у обработчика. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2012, 11:54 |
|
"Устаревшие" сообщения MQ
|
|||
---|---|---|---|
#18+
Semen Popov, для того что сообщения удалялись автоматически из очереди в заголовке запроса mq-сообщения присвоить MQMD.Expiry = " время жизни сообщения в мс ". Если вы это сделали и оно не удаляется, тогда советую обратится в IBM-саппорт. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2012, 12:17 |
|
"Устаревшие" сообщения MQ
|
|||
---|---|---|---|
#18+
Евгений Хабаров, вот какие ошибки выдает менеджер очерередей: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
А еще часто бывает: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Параметр KeepAlive есть. Но флаг не установлен. На закладке TCP Settings в свойствах менеджера не задано ни одного параметра - ни порт, ни Library1, ни KeepAlive (все пусто). И еще - как проверить версию MQ? В частности, меня интересует, какая версия фикспака MQ? Наверно, есть какие-то команды? В справке MQ Services выдается версия 5.3.0, MQ Explorer - 5.3. Чувствую, что у меня фикспак не накатан. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2012, 16:12 |
|
"Устаревшие" сообщения MQ
|
|||
---|---|---|---|
#18+
Semen Popov, http://publib.boulder.ibm.com/infocenter/wmqv6/v6r0/index.jsp?topic=%2Fcom.ibm.mq.amqzag.doc%2Ffa15760_.htm ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2012, 16:36 |
|
"Устаревшие" сообщения MQ
|
|||
---|---|---|---|
#18+
Для версии 5 dspmqver не работает. Нашел команду mqver. Вообщем, показывает версию 530.14 CSD14. Значит, фикспак 14, вроде. Евгений ХабаровТриггерные сообщения генерируются в очередь триггера только в том случае, если очередь триггера "слушается", т.е. input use count для этой очереди больше 0. Если я правильно понял, триггер-монитор подключен к менеджеру MQ через клиентский канал. В этом случае может возникать ситуация, когда триггер-монитор считает что подключен к серверу, а с т.з. сервера соединение уже "отвалилось". Триггер-монитор подключен именно через канал клиент-сервер. Евгений ХабаровТут нужно смотреть настройки TCP/IP на сервере и на клиенте, в частности параметр KeepAlive. Не помню есть ли параметр KeepAlive на канале SRVCONN для версии 5.3. Если есть, нужно проверять его значение. Не мешает проверить версию клиента MQ там, где стоит триггер-монитор. Версия клиента 1.4.1. Что подкрутить? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2012, 16:46 |
|
"Устаревшие" сообщения MQ
|
|||
---|---|---|---|
#18+
Semen Popov Версия клиента 1.4.1. Что подкрутить? Это как ? Версия клиента MQ 1.4.1 - не верю :) Какая платформа/ОС? Как минимум версию клиента попробовать поставить аналогичную версии и фикспаку сервера. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2012, 17:30 |
|
"Устаревшие" сообщения MQ
|
|||
---|---|---|---|
#18+
Евгений ХабаровSemen Popov Версия клиента 1.4.1. Что подкрутить? Это как ? Версия клиента MQ 1.4.1 - не верю :) Какая платформа/ОС? Как минимум версию клиента попробовать поставить аналогичную версии и фикспаку сервера.Может, я напутал. В одном из файлов в директории инсталяции вычитал. Извиняюсь. А как проверить версию клиента? Самого пакета инсталяции нет. Ставил другой человек. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2012, 18:00 |
|
"Устаревшие" сообщения MQ
|
|||
---|---|---|---|
#18+
ОС на менеджере MQ Win server 2008 r2, на клиенте - Win server 2003 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2012, 18:05 |
|
"Устаревшие" сообщения MQ
|
|||
---|---|---|---|
#18+
Евгений Хабаров, по-моему тут изложена аналогичная ситуация. И Вы там даете рекомендации. А как на клиенте выставить KeepAlive? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2012, 18:22 |
|
"Устаревшие" сообщения MQ
|
|||
---|---|---|---|
#18+
Semen PopovМожет, я напутал. В одном из файлов в директории инсталяции вычитал. Команда та же, как для сервера, так и для клиента, mqver для версии 5.x, dspmqver для 6.0 и выше. Если в общий PATH исполнимый каталог клиента не внесен, то искать эту команду в подкаталоге bin клиента. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2012, 14:09 |
|
"Устаревшие" сообщения MQ
|
|||
---|---|---|---|
#18+
Semen PopovЕвгений Хабаров, по-моему тут изложена аналогичная ситуация. И Вы там даете рекомендации. А как на клиенте выставить KeepAlive? В первую очередь этот параметр (таймауты) нужно настроить на уровне ОС. Enabling TCP/IP KeepAlive on Windows Windows TCP/IP Registry Entries Вторым шагом нужно включить использование KeepAlive (Чтобы MQ выставлял флажок при создании сокета). Setting the TCP/IP KeepAlive interval to be used by WebSphere MQ To enable keepalive for a client, you need to define the following registry key: HKLM\SOFTWARE\IBM\MQSeries\CurrentVersion\Configuration\TCP and define a string value of 'KeepAlive' set to 'Yes' Дополнительно, если SRVCONN таки "теряет" клиентов, есть еще такой документ: Number of client channels increasing ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2012, 15:13 |
|
"Устаревшие" сообщения MQ
|
|||
---|---|---|---|
#18+
Евгений ХабаровКоманда та же, как для сервера, так и для клиента, mqver для версии 5.x, dspmqver для 6.0 и выше. Если в общий PATH исполнимый каталог клиента не внесен, то искать эту команду в подкаталоге bin клиента.Я не знаю, может у меня клиент урезанный, но никаких подкаталогов в директории установки нет. Там только файлы: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
В файле msqs.mc написано: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2012, 12:34 |
|
"Устаревшие" сообщения MQ
|
|||
---|---|---|---|
#18+
Евгений ХабаровВ первую очередь этот параметр (таймауты) нужно настроить на уровне ОС. ... В ОС Win Server 2003 на клиенте я не нахожу ветки реестра HKLM\SOFTWARE\IBM\MQSeries\CurrentVersion\Configuration\ TCP и HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ VxD\MSTCP , о которых написано в представленных вами ссылках. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2012, 12:59 |
|
"Устаревшие" сообщения MQ
|
|||
---|---|---|---|
#18+
Semen Popov, А, это похоже версия вот этого: MA7K: WebSphere MQ for Windows - Trigger monitor service Не знаю как в версии 1.4.1, но в нынешней версии этой программе требуется клиент MQ. Программа должна обращаться к библиотеке mqic32.dll, стоит поискать эту dll и посмотреть ее версию. Список используемых DLL у исполняющейся программы можно посмотреть например с помощью Sysinternals Process Explorer для Windows . Ну а уже у клиентской библиотеки mq (mqic32.dll) можно посмотреть свойства и узнать ее версию. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2012, 13:47 |
|
|
start [/forum/topic.php?fid=43&gotonew=1&tid=1601960]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
13ms |
get first new msg: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 260ms |
total: | 410ms |
0 / 0 |