我们正在尝试从先前配置的MQ通道中删除一个或多个队列。 DEletion成功了。当我们运行应用程序代码时,我们得到以下错误代码/说明: -
2136(0858)(RC2136):MQRC_MULTIPLE_REASONS 说明 发出MQOPEN,MQPUT或MQPUT1调用以打开通讯组列表或将消息放入通讯组列表,但调用的结果对于列表中的所有目标都不相同。以下之一适用于: •某些目的地的呼叫成功,而其他目的地则没有。在这种情况下,完成代码是MQCC_WARNING。 •所有目的地的呼叫都失败,但原因各不相同。在这种情况下,完成代码是MQCC_FAILED。 此原因代码出现在以下环境中:AIX®,HP-UX,i5 / OS™,Solaris,Windows以及连接到这些系统的WebSphere®MQ客户端。 完成代码 MQCC_WARNING或MQCC_FAILED
程序员的回应 检查MQRR响应记录以识别呼叫失败的目标以及失败的原因。确保应用程序在调用时提供足够的响应记录,以确定错误。对于MQPUT1调用,必须使用MQOD结构指定响应记录,而不是MQPMO结构。
https://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.amqzao.doc/fm13300_.htm
http://www.mqseries.net/phpBB/viewtopic.php?p=6475&sid=eb310522e0959bb828917836dfa550ea
我们如何解决这个问题?
答案 0 :(得分:2)
这个原因代码表明你的应用程序通过在MQOD结构中挂起的MQOR结构中提供它们的名称,一次对多个队列执行MQPUT。
您说您删除了一些队列,然后在删除完成后,您的应用程序开始报告此错误。这表明您已删除了应用程序先前引用的至少一个队列,但未删除它正在使用的所有队列。因此,一些原因代码是MQRC_NONE,并且一些原因代码是MQRC_OBJECT_NOT_FOUND,因为您删除了它们,因此删除了MQRC_MULTIPLE_REASONS。正如您的问题中的文字所示,要查看所有单独的原因代码,您需要查看返回给您的应用程序的MQRR结构。
也许您可以发布您的应用程序代码,或至少发布队列名称的部分,以便我们进一步提供建议。
答案 1 :(得分:0)
解决方案不仅要删除队列,还要将其从通讯组列表中删除。