ablog

不器用で落着きのない技術者のメモ

com.ibm.mq.MQException: MQJE001: 完了コード '2'、理由 '2085'

Oracle Messaging Gateway を使って、WebSphere MQ のキューにメッセージを飛ばそうとしてたら、Oracle Messaging Gateway のログに以下のメッセージが出力されていた。

[Linked-exception]
com.ibm.mq.MQException: MQJE001: MQJE001: 完了コード '2'、理由 '2085'。
	at com.ibm.mq.MQDestination.open(MQDestination.java:327)
	at com.ibm.mq.MQQueue.<init>(MQQueue.java:261)
	at com.ibm.mq.MQQueueManager.accessQueue(MQQueueManager.java:2782)
	at oracle.mgw.drivers.mq.MQMsgConsumer.init(MQMsgConsumer.java:174)
	at oracle.mgw.drivers.mq.MQMsgConsumer.<init>(MQMsgConsumer.java:104)
	at oracle.mgw.drivers.mq.MQLink.createConsumer(MQLink.java:929)
	at oracle.mgw.drivers.mq.MQLink.getConsumer(MQLink.java:906)
	at oracle.mgw.engine.Worker.collectEnqLogRec(Worker.java:1531)
	at oracle.mgw.engine.Worker.recoverJob(Worker.java:1118)
	at oracle.mgw.engine.Worker.myRun(Worker.java:98)
	at oracle.mgw.engine.ManagedThr.run(ManagedThr.java:58)

ぐぐってみると、

2085 = MQRC_UNKNOWN_OBJECT_NAME

Make sure that the queue name that you are referencing through the JNDI lookup is spelled correctly and that the queue has been defined within your MQ QMgr. Be aware that MQSeries object names are case-sensitive.

MQSeries.net :: View topic - MQJE001: Completion Code 2, Reason 2085

単にオブジェクトが見つからないって怒られてるみたいなので、キューがあるか見てみる。

$ su - mqm
$ runmqsc
:display ql(OUT_LOG_QUEUE)
     1 : display ql(OUT_LOG_QUEUE)
AMQ8147: WebSphere MQ object OUT_LOG_QUEUE not found.

げ、作ってなかった。では作ろう。

:define qlocal (OUT_LOG_QUEUE1)

無事解決。WebSphere MQ 側にメッセージが飛ぶようになった。