API 完成码和原因码

对于每个调用,队列管理器或出口例程都会返回完成代码和原因码,以指示该调用是成功还是失败。

有关 IBM® MQ API 的更多信息,请参阅 开发应用程序以及 开发应用程序参考中的参考信息。

API 完成代码

以下是 IBM MQ 返回的完成代码 (MQCC) 列表
0:成功完成 (MQCC_OK)

调用圆满完成;已设置所有输出参数。

在此情况下,Reason 参数的值始终为 MQRC_NONE。

1:警告(部分完成)(MQCC_WARNING)

部分完成了调用。 除 CompCodeReason 输出参数外,可能还设置了一些输出参数。

Reason 参数提供其他信息。

2: 调用失败 (MQCC_FAILED)

未完成调用的处理,并且通常没有更改队列管理器的状态;对异常情况进行了特别记录。 仅设置了 CompCodeReason 输出参数;所有其他参数均保持不变。

原因可能是应用程序中存在故障,或者可能是该程序以外的某些情况导致的结果,例如应用程序的权限可能已被撤销。 Reason 参数提供其他信息。

API 原因码

原因码参数 (Reason) 是完成代码参数 (CompCode) 的限定条件。

如果没有需要报告的特殊原因,那么将返回 MQRC_NONE。 成功调用将返回 MQCC_OK 和 MQRC_NONE。

如果完成代码为 MQCC_WARNING 或 MQCC_FAILED,那么队列管理器将始终报告合理的原因;每个调用描述下都会提供详细信息。

在用户出口例程设置完成代码和原因的位置,应当遵守这些规则。 此外,用户出口定义的任何特殊原因值都应当小于零,以确保不与队列管理器定义的值冲突。 出口可以在适当的情况下设置队列管理器已定义的原因。

原因码还会出现在:
  • MQDLH 结构的 Reason 字段
  • MQMD 结构的 Feedback 字段

IBM MQ 9.1.0开始,如果进行了多次客户机连接尝试 (例如,使用以逗号分隔的连接名称的通道) ,并且连接序列失败,那么在返回到应用程序时,将优先考虑除 MQRC_HOST_NOT_AVAILABLE 和 MQRC_STANDBY_Q_MGR 以外的原因码。 在此产品的先前版本中,将始终返回连接序列中遇到的最后一个原因码,这可能导致不会将配置错误(例如,在连接尝试中先前遇到的 MQRC_NOT_AUTHORIZED)返回到应用程序。

IBM MQ 支持的所有平台上都支持完整的每个原因码,除非存在:
  • 在原因码顶部有一个或多个平台图标以指示此原因码仅适用于所显示的平台。
  • 包含一个针对特定语句显示的平台图标,表示该语句仅适用于该平台。
请参阅 平台图标 以获取图标的描述。
子主题是一组原因码 (按数字顺序) ,提供详细信息以帮助您了解这些原因码,包括:
  • 导致生成该代码的情况说明
  • 关联的完成代码
  • 建议程序员为响应该代码执行的操作