【发布时间】:2018-09-16 11:01:29
【问题描述】:
无法从 IBM MQ 检索第一条响应消息。
我在一个运行良好的 ASP.NET Web 应用程序中设计了 IBM MQ 连接、消息传递和消息检索。 当我尝试在 WCF REST 服务中实现相同的逻辑时,第一个请求将始终在 .net 中返回错误为“MQRC_NO_MSG_AVAIL”。 但是,当我通过第二个请求时,我将收到第一个请求的响应 IBM MQ 中第一个请求的错误是
消息。 . . . : 从主机 10 (XXX.XXX.X.X) 接收时出错。
原因 。 . . . . : 从 10 接收数据时发生错误 (XXX.XXX.X.X) 通过 TCP/IP。这可能是由于通讯 失败。恢复 。 . . :返回码来自 TCP/IP(读取)调用为 3426 (X'X'00000D62'')。记录 这些值并告诉系统管理员。
请求openOptions:
MQC.MQOO_INPUT_AS_Q_DEF + MQC.MQOO_FAIL_IF_QUIESCING + MQC.MQOO_OUTPUT 响应 openOptions : MQC.MQOO_INQUIRE + MQC.MQOO_BROWSE + MQC.MQOO_FAIL_IF_QUIESCING + MQC.MQOO_INPUT_SHARED
注意:当我尝试检查 IBM MQ Explorer 时,第一个请求响应总是进入 'Current QueueDepth' 。当我第二次读取响应时,当前 QueueDepth 不会变为空白。 我们有单独的输入和输出队列 我们尝试重新启动 IBM MQ、清除消息、创建新队列和新通道,但没有任何效果。
ReadMsg 方法:
queue = queueManager.AccessQueue(queueName, MQC.MQOO_INQUIRE + MQC.MQOO_BROWSE + MQC.MQOO_FAIL_IF_QUIESCING + MQC.MQOO_INPUT_SHARED );
queueMessage = new MQMessage();
queueMessage.Format = MQC.MQFMT_STRING;
queueGetMessageOptions = new MQGetMessageOptions();
queue.Get(queueMessage, queueGetMessageOptions);
strReturn = queueMessage.ReadString(queueMessage.MessageLength);
【问题讨论】:
标签: c# asp.net rest wcf ibm-mq