1

我正在远程连接到服务器上的 MQ,并在我的机器上安装了 MQ 客户端 v6.0。我能够将消息放入队列,但我无法从同一个队列中获取消息,输出为“RC2033:MQRC_NO_MSG_AVAILABLE”

谁能帮我找到问题?

这会是由于队列的属性吗?

以下是我用来弹出消息的代码:

弹出消息:

queue = mqQMgr.AccessQueue("queue_name", MQC.MQOO_FAIL_IF_QUIESCING + MQC.MQOO_INPUT_SHARED);
MQMessage queueMessage = new MQMessage();
queueMessage.Format = MQC.MQFMT_STRING;
MQGetMessageOptions queueGetMessageOptions = new MQGetMessageOptions();
queueGetMessageOptions.Options = MQC.MQGMO_WAIT;
queueGetMessageOptions.MatchOptions = MQC.MQMO_NONE;
queueGetMessageOptions.WaitInterval = 1000;
queue.Get(queueMessage, queueGetMessageOptions);
tbPoptxt.Text = "Message No" + count + ":" + queueMessage.ReadString(queueMessage.MessageLength);

推送代码

int optons = MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING;//Queue which opens with options output
        queue = mqQMgr.AccessQueue("queue_name", optons);
        MQMessage queueMessage = new MQMessage();
        queueMessage.WriteString(tbPushtxt.Text.ToString());
        queueMessage.Format = MQC.MQFMT_STRING;
        MQPutMessageOptions queuePutMessageOptions = new MQPutMessageOptions();
        queuePutMessageOptions.Options = MQC.MQGMO_SYNCPOINT | MQC.MQGMO_FAIL_IF_QUIESCING;
        queue.Put(queueMessage, queuePutMessageOptions);

mqQMgr.Commit();

我正在使用相同的队列来放置消息和弹出消息

4

1 回答 1

1

在示例目录中查找 nmqsput 和 nmqsget c# 示例 - 这些正是您所追求的,并且是很好的工作示例。

查看上面的代码,我认为获取消息没有问题,随后您的评论是 amqsputc 也未能找到消息。我认为问题出在推杆方面。

这听起来可能是一个愚蠢的问题,但你怎么知道信息在那里。看跌期权后的curdepth是多少?查看队列状态 - 是否有未提交的消息?(我之前见过的一件事是放在一个工作单元(同步点)下,然后不提交,然后另一个应用程序试图获取它。

于 2013-11-05T22:48:16.597 回答