我正在使用IBM Websphere MQ。我有隊列管理器和隊列名稱。現在,我想檢查隊列中是否有消息?如何檢查隊列中是否有消息
我以前沒有在此工作過。請撥打幫助
如果您需要更多信息,請讓我知道!
感謝
我正在使用IBM Websphere MQ。我有隊列管理器和隊列名稱。現在,我想檢查隊列中是否有消息?如何檢查隊列中是否有消息
我以前沒有在此工作過。請撥打幫助
如果您需要更多信息,請讓我知道!
感謝
下面的代碼是.NET/amqmdnet - 但你可能嘗試這種轉換在此期間,直到一個Java開發看到您的帖子。
要看看有沒有在隊列中的消息,實際上並沒有將它從隊列中,使用MQC.MQOO_BROWSE
隊列和IBM.WMQ.MQC.MQGMO_BROWSE_FIRST
作爲選項 你會得到MQRC_NO_MSG_AVAILABLE
如果隊列爲空。
MQQueueManager queueManager = null;
MQQueue queue = null;
MQMessage queueMessage = new MQMessage();
queueManager = new MQQueueManager(qmName, channelName, connName);
queue = queueManager.AccessQueue(qName,
MQC.MQOO_BROWSE + MQC.MQOO_FAIL_IF_QUIESCING);
MQGetMessageOptions opt = new MQGetMessageOptions();
opt.Options = IBM.WMQ.MQC.MQGMO_BROWSE_FIRST;
queueMessage.CorrelationId = IBM.WMQ.MQC.MQMI_NONE;
queueMessage.MessageId = IBM.WMQ.MQC.MQMI_NONE;
queue.Get(queueMessage, opt);
String sMessage = queueMessage.ReadString(queueMessage.DataLength);
要查看下一條消息,請使用IBM.WMQ.MQC.MQGMO_BROWSE_NEXT
;
要實際讀取隊列中的消息,請在AccessQueue上使用MQC.MQOO_INPUT_SHARED
。
答案沒有顯示如何檢查MQRC_NO_MSG_AVAILABLE。這是我的解決方案。如果有更好的,請讓我知道。
try
{
queue.Get(queueMessage, opt);
String sMessage = queueMessage.ReadString(queueMessage.DataLength);
}
catch (MQException err)
{
if (err.ReasonCode.CompareTo(MQC.MQRC_NO_MSG_AVAILABLE) == 0)
return true;
}
對於Windows機器 這取決於您的隊列管理器。
你可以使用MQUtilities - ih03包 - 其中有rfhUtil.exe(本地QM)和rfhUtilC.exe(用於遠程QM)
對於本地QM,它是直線前進,你需要將合適的值和命中瀏覽時,它會顯示隊列深度。
對於遠程QM,Place/TCP /(PortNo)表示隊列管理器名稱和隊列名稱的隊列。點擊瀏覽,你會知道隊列深度。
對於Unix/Ubuntu/Linux版本 - 有一個名爲MQVisualEdit的產品,它與此類似。
請提供哪些開發平臺/語言? Java,C#等 – StuartLC 2011-01-13 12:20:22
對不起,這是在Java – 2011-01-13 12:40:16