CallType (MQLONG)

包含有关调用此函数的原因的信息的字段; 定义了以下值。

消息传递调用类型: 这些调用类型包含有关消息的信息。 DataLengthBufferLength 参数对这些调用类型有效。
MQCBCT_MSG_REMOVED
已使用已从对象句柄以破坏性方式除去的消息调用消息使用者函数。

如果 CompCode 的值为 MQCC_WARNING ,那么 Reason 字段的值为 MQRC_TRUNCATED_MSG_RECEIVED 或指示数据转换问题的其中一个代码。

MQCBCT_MSG_NOT_REMOVED
已使用尚未以破坏性方式从对象句柄中除去的消息调用消息使用者函数。 可以使用 MsgToken以破坏性方式从对象句柄中除去消息。
可能未除去该消息,因为:
  • MQGMO 选项请求了浏览操作 MQGMO_BROWSE_ *
  • 消息大于可用缓冲区,并且 MQGMO 选项未指定 MQGMO_ACCEPT_TRUNCATED_MSG

如果 CompCode 的值为 MQCC_WARNING ,那么 Reason 字段的值为 MQRC_TRUNCATED_MSG_FAILED 或指示数据转换问题的代码之一。

回调控制调用类型: 这些调用类型包含有关回调控制的信息,并且不包含有关消息的详细信息。 这些调用类型是使用 MQCBD 结构中的 选项 请求的。

DataLengthBufferLength 参数对于这些调用类型无效。
MQCBCT_REGISTER_CALL
此调用类型的目的是允许回调函数执行一些初始设置。

在注册回调之后,即使用 MQOP_REGISTER 的 Operation 字段的值从 MQCB 调用返回时,将立即调用回调函数。

此调用类型同时用于消息使用者和事件处理程序。

如果请求,这是回调函数的第一次调用。

Reason 字段的值为 MQRC_NONE。

MQCBCT_START_CALL
此调用类型的目的是允许回调函数在启动时执行某些设置,例如,恢复先前停止时清除的资源。

使用 MQOP_START 或 MQOP_START_WAIT 启动连接时,将调用回调函数。

如果在另一个回调函数中注册了回调函数,那么在回调返回时将调用此调用类型。

此调用类型仅用于消息使用者。

Reason 字段的值为 MQRC_NONE。

MQCBCT_STOP_CALL
此调用类型的目的是允许回调函数在停止一段时间时执行一些清除,例如,清除在使用消息期间获取的其他资源。

当使用 MQOP_STOP 的 Operation 字段值发出 MQCTL 调用时,将调用回调函数。

此调用类型仅用于消息使用者。

Reason 字段的值设置为指示停止的原因。

MQCBCT_DEREGISTER_CALL
此调用类型的目的是允许回调函数在使用过程结束时执行最终清除。 在下列情况下调用回调函数:
  • 使用带有 MQOP_DEREGISTER 的 MQCB 调用来注销回调函数。
  • 队列已关闭,导致隐式注销。 在此实例中,回调函数传递 MQHO_UNUSABLE_HOBJ 作为对象句柄。
  • MQDISC 调用完成-导致隐式关闭,并因此导致注销。 在这种情况下,不会立即断开连接,并且尚未落实任何正在进行的事务。

如果在回调函数本身内执行任何这些操作,那么一旦回调返回,将调用该操作。

此调用类型同时用于消息使用者和事件处理程序。

如果请求,那么这是回调函数的最后一次调用。

Reason 字段的值设置为指示停止的原因。

MQCBCT_EVENT_CALL
事件处理程序函数

当队列管理器或连接停止或停顿时,已在没有消息的情况下调用事件处理程序函数。

此调用可用于对所有回调函数执行相应的操作。

消息使用者函数

当检测到特定于对象句柄的错误 (CompCode = MQCC_FAILED) 时,调用了消息使用者函数,但没有消息; 例如, Reason 代码 = MQRC_GET_处禁止。

Reason 字段的值设置为指示调用原因。

MQCBCT_MC_EVENT_CALL

已针对多点广播事件调用事件处理程序函数; 将向事件处理程序发送 IBM® MQ 多点广播事件而不是 "正常" IBM MQ 事件。

有关 MQCBCT_MC_EVENT_CALL 的更多信息,请参阅 多点广播异常报告