2042 означает «Используемый объект».Поскольку не существует концепции исключительного использования очередей для производителей сообщений, один из ваших потребителей блокирует очередь.
Это поведение контролируется атрибутом DEFSOPT определения очереди .Это в самом администраторе очередей, а не в определениях управляемых объектов или ваших параметрах фабрики.Из командной строки при входе в систему как mqm (или эквивалент платформы, если QMgr находится в Windows, iSeries, z / OS и т. Д.) Вам потребуется запустить runmqsc и выполнить следующие команды, чтобы проверить и затем устранить проблему.В моем примере QMgr - это PLUTO, а примерная очередь - SYSTEM.DEFAULT.LOCAL.QUEUE.
/home/mqm: runmqsc PLUTO
5724-H72 (C) Copyright IBM Corp. 1994, 2009. ALL RIGHTS RESERVED.
Starting MQSC for queue manager PLUTO.
dis q(system.default.local.queue) defsopt
1 : dis q(system.default.local.queue) defsopt
AMQ8409: Display Queue details.
QUEUE(SYSTEM.DEFAULT.LOCAL.QUEUE) TYPE(QLOCAL)
DEFSOPT(EXCL)
alter ql(system.default.local.queue) defsopt(shared)
2 : alter ql(system.default.local.queue) defsopt(shared)
AMQ8008: WebSphere MQ queue changed.
dis q(system.default.local.queue) defsopt
3 : dis q(system.default.local.queue) defsopt
AMQ8409: Display Queue details.
QUEUE(SYSTEM.DEFAULT.LOCAL.QUEUE) TYPE(QLOCAL)
DEFSOPT(SHARED)
Если вы отобразите очередь и обнаружите, что она уже установлена для DEFSOPT (SHARED), то что-то должноуказать эксклюзивное использование очереди через API.Обычно это означает C или базовую Java-программу, так как эти не-JMS API имеют доступ к низкоуровневой функциональности WMQ.Это может быть немного сложнее для диагностики, и я обычно использую трассировку или выход SupportPac MA0W для отображения вызовов API и используемых опций.Если это так, я бы хотел узнать больше о том, что подразумевается под «простым контроллером / действием», как отмечено в исходном сообщении.
Наконец, если очередь, к которой вы обращаетесь, является удаленной очередьютогда он преобразуется в очередь передачи.Канал всегда будет устанавливать очередь передачи в GET (INHIBITED) и получать эксклюзивную блокировку для него.Это согласуется с функциональностью WMQ, поскольку приложение может получать сообщения только из локальной очереди.