Ibm mq 如何检查队列中是否有消息

Ibm mq 如何检查队列中是否有消息,ibm-mq,Ibm Mq,我正在使用IBM Websphere MQ。我有队列管理器和队列名称。现在,我想检查队列中是否有任何消息 我以前没有做过这个。求救 如果您需要更多信息,请告诉我 谢谢下面的代码是.NET/amqmdnet-但是您可以尝试同时转换它,直到Java开发人员看到您的帖子 要查看队列上是否有消息,而不实际将其从队列中取出,请在队列上使用MQC.MQOO_BROWSE,并将IBM.WMQ.MQC.MQGMO_BROWSE_FIRST作为选项 如果队列为空,您将获得可用的MQRC\u NO\u MSG\u

我正在使用IBM Websphere MQ。我有队列管理器和队列名称。现在,我想检查队列中是否有任何消息

我以前没有做过这个。求救

如果您需要更多信息,请告诉我


谢谢

下面的代码是.NET/amqmdnet-但是您可以尝试同时转换它,直到Java开发人员看到您的帖子

要查看队列上是否有消息,而不实际将其从队列中取出,请在队列上使用
MQC.MQOO_BROWSE
,并将
IBM.WMQ.MQC.MQGMO_BROWSE_FIRST
作为选项 如果队列为空,您将获得可用的
MQRC\u NO\u MSG\u

MQMessage queueMessage=new MQMessage();
MQQueueManager queueManager=新MQQueueManager(qmName、channelName、connName);
MQQueuequeue=queueManager.AccessQueue(qName,
MQC.MQOO_浏览+MQC.MQOO_失败(如果停止);
MQGetMessageOptions opt=新的MQGetMessageOptions();
opt.Options=IBM.WMQ.MQC.MQGMO_BROWSE_FIRST;
queueMessage.CorrelationId=IBM.WMQ.MQC.MQMI_NONE;
queueMessage.MessageId=IBM.WMQ.MQC.MQMI_NONE;
Get(queueMessage,opt);
String sMessage=queueMessage.ReadString(queueMessage.DataLength);
要查看下一条消息,请使用
IBM.WMQ.MQC.MQGMO_BROWSE_next


要从队列中实际读取消息,请在AccessQueue上使用
MQC.MQOO\u INPUT\u SHARED

答案没有显示如何检查MQRC\u NO\u MSG\u是否可用。这是我的解决办法。如果有更好的,请告诉我

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-pack,它具有rfhUtil.exe(本地Qm)和rfhUtilC.exe(用于远程Qm)

对于本地QM,您需要直接放置适当的值并点击browse,它将显示队列深度

对于远程QM,放置/TCP/(端口号)作为队列管理器名称,放置队列作为队列名称。点击浏览,您将了解队列深度


对于Unix/Ubuntu/Linux版本-有一个名为MQVisualEdit的产品与此类似。

请提供哪个开发平台/语言?Java、C#etcYou还可以使用
MQINQ
请求
MQIA_CURRENT_Q_DEPTH
整数属性。好处是您可以在
MQGET
MQINQ
上设置不同的安全性。这允许监视用户访问队列的属性,但不一定允许浏览或获取。