解決した
IBM Technote IZ66146から回答を見つけました
同じ問題を抱えている他の人に役立つことを願っています。
MQ Queue からメッセージを読み取る簡単なメソッドを作成しました。
ループで、メッセージを読み取ろうとします (waitInterval を使用)。キューからメッセージを正常に読み取ると、2195 リターン コードが返されます。どうすればこれを解決できますか?
これは、例外処理などを行わない単純化されたバージョンのコードです。
public static void main(String args[]) {
MQException.logExclude(MQException.MQRC_NO_MSG_AVAILABLE);
MQException.logExclude(MQException.MQRC_UNEXPECTED_ERROR);
MQException.log = null;
while (true) {
incomeDeployMsg = readFromQueue(waitReadInterval);
System.out.println(dateFormater.format(new Date()) + " Income msg");
}
}
public String readFromQueue(int waitInterval) throws MQException{
MQMessage message = new MQMessage();
try {
if (m_inQueue == null || !m_inQueue.isOpen())
m_inQueue = m_mqQmgr.accessQueue(m_inQueueName, CMQC.MQOO_INQUIRE + CMQC.MQOO_FAIL_IF_QUIESCING + CMQC.MQOO_INPUT_SHARED);
message.messageId = CMQC.MQMI_NONE;
MQGetMessageOptions gmo = new MQGetMessageOptions();
gmo.options = CMQC.MQGMO_WAIT;
gmo.waitInterval = waitInterval;
m_inQueue.get(message, gmo);
return message.readStringOfCharLength(message.getMessageLength());
} catch (MQException mqe) {
throw mqe;
} finally {
message.clearMessage();
}
}
結果の最初の行は私のコードからのものではありません!!! 標準出力に出力するのはIBMのクラスだと思います。エラーを解決するにはどうすればよいですか?
結果:
MQJE001: 完了コード '2'、理由 '2195'。
2013-05-15 11:44:27 収入メッセージ