Системные очереди менеджера, из которых нельзя удалять сообщения

В менеджере очередей WebSphere MQ существуют системные очереди (SYSTEM.*), обеспечивающие функционирование различных возможностей менеджера (Publish/Subscribe, Channel authentication records и т.д.).

Со временем в системных очередях начинают появляться и копиться сообщения. Некоторые из них постоянно находятся в этих очередях и никогда не исчезают.

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

Полный список системных очередей с описанием приведен здесь (для версии WebSphere MQ 7.5): http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.ref.con.doc/q081590_.htm?lang=en

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

SYSTEM.DURABLE.SUBSCRIBER.QUEUE – локальная очередь, используемая для хранения долговременных подписок (durable subscriptions). То есть, если мы создаем обычную подписку (DEFINE SUB), то в этой очереди появится сообщение, в данных которого будет информация об этой подписке. В одном сообщении может быть несколько подписок.

Если удалить все сообщения из очереди SYSTEM.DURABLE.SUBSCRIBER.QUEUE, то, при следующем перезапуске менеджера очередей, исчезнут все подписки.

===================================================================
Хозяйке на заметку:

Восстановить подписки можно из предварительно сделанного бэкапа (команда dmpmqcfg).
При восстановлении может появиться ошибка:

AMQ8464: WebSphere MQ subscription SYSTEM.DEFAULT.SUB not found.

Это связано с тем, что из очереди SYSTEM.DURABLE.SUBSCRIBER.QUEUE было удалено определение системной подписки SYSTEM.DEFAULT.SUB, на основе которой создаются остальные. Поэтому, прежде чем восстанавливать подписки из бэкапа, необходимо вручную создать SYSTEM.DEFAULT.SUB через runmqsc:

Другой вариант, это запустить менеджер командой

strmqm -c

которая переопределит все дефолтные системные объекты менеджера.

===================================================================

SYSTEM.AUTH.DATA.QUEUE – локальная очередь, используемая для хранения прав доступа к объектам менеджера (очереди, топики, каналы). Обычно создается одно сообщение на каждый объект.

Случайно удалить сообщения из очереди SYSTEM.AUTH.DATA.QUEUE не получится, т.к. менеджер очередей открывает эту очередь в эксклюзивное использование (Input exclusive) и при попытке удаления возникает предупреждение “Объект используется. Объект уже открыт другим приложением. (AMQ4039)”.

Однако, если, по каким-то причинам, для этой очереди будут запрещены операции Put/Get, то это приведет к нарушению работы команды setmqauth, т.е. установить/изменить права доступа будет невозможно.

SYSTEM.CHLAUTH.DATA.QUEUE – локальная очередь, используемая для хранения записей идентификации канала (channel authentication records).

Если удалить сообщения из этой очереди, то, при следующем перезапуске менеджера очередей, исчезнут записи идентификации канала, т.е. нарушится доступ по каналам.

SYSTEM.CLUSTER.REPOSITORY.QUEUE – репозиторий кластера. В этой очереди хранится репозиторий кластера (full repository information), т.е. определение всех кластерных объектов. Обычно создается одно сообщение на каждый объект.

Случайно удалить сообщения из этой очереди не получится, т.к. при попытке удаления возникает предупреждение “Объект используется. Объект уже открыт другим приложением. (AMQ4039)”.

Проблемы в кластере начнутся, если для менеджера, являющегося полным репозиторием (full repository), установить на очереди запрет операций Put/Get, затем перезапустить менеджер, отменить запрет, а после этого удалить сообщения из очереди. В случае, когда в кластере несколько full repository, проблем не возникнет – после удаления сообщений из очереди SYSTEM.CLUSTER.REPOSITORY.QUEUE и восстановления доступа к ней, будет получена информацию от другого менеджера, и пострадавший репозиторий снова заполнится.

SYSTEM.CHANNEL.SYNCQ – очередь, в которой хранятся данные синхронизации каналов.

Удаление сообщений из этой очереди может привести к нарушению порядковых номеров сообщений, передаваемых по каналам, т.е. к рассинхронизации каналов. Для восстановления нормальной работы необходимо выполнить команду RESET CHANNEL.

SYSTEM.HIERARCHY.STATE – очередь, используемая для хранения информации о взаимоотношении менеджеров очередей в иерархии publish/subscribe.

SYSTEM.INTER.QMGR.FANREQ – очередь, используемая в иерархии publish/subscribe для обработки запросов по созданию прокси-подписки (proxy subscription) на удаленном менеджере очередей.

Удаление сообщений из последних двух очередей может привести к нарушению работы механизма publish/subscribe.

VN:F [1.9.22_1171]
Rating: 5.0/5 (2 votes cast)
Метки: , , ,
Опубликовано в WebSphere MQ, Обнаружение и устранение проблем

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Выбор языка: