我有MQConsumerClass,它從隊列中檢索消息,如下所示。WebSphere MQ MessageListener(類似於JMS消息監聽器)
while (running)
{
try
{
MQMessage rcvMessage = new MQMessage();
MQGetMessageOptions gmo = new MQGetMessageOptions();
gmo.options = MQConstants.MQGMO_WAIT;
gmo.waitInterval = 60000;
queue.get(rcvMessage, gmo);
if(rcvMessage.getTotalMessageLength() > 0)
{
String msgText = rcvMessage.readUTF();
}
}
catch blocks{}
}
但問題是當隊列中沒有消息時,2033異常被拋出。
我認爲2033 NO_MSG_AVAILABLE異常不是嚴重異常,可能會停止操作。
但是,只要隊列中有新消息,我就要調用onMessage(Message msg)
函數。
我想用MessageListener創建這個類,但是我找不到MessageListener或者任何與它有關的例子。
因此,請告訴我WMQ Java API中是否有MessageListener函數。
或
有沒有辦法做到這一點?
那麼,你的意思是不是比while循環選擇其他?爲了減少while循環的次數,我使用了MQConstants.MQGMO_WAIT;並將waitInterval設置爲半分鐘(60,000)。但是,「MQJE001:完成代碼'2',原因'2033'」。如果隊列在waitInterval結束之前沒有任何消息則顯示。那麼,我怎樣才能避免這種異常?我編輯了我的新代碼。非常感謝你的幫助。 –