MQ 获取消息选项

MQ 获取消息选项可用于控制 MQGET 的行为。

您可以不指定本部分中随后描述的选项,也可以指定其中一个或多个选项。 如果您需要多个选项,那么这些值可以:
  • 相加(不要将同一常量相加多次),或者
  • 通过按位“或”运算组合在一起(如果编程语言支持位运算)。

Options 字段的初始值为 MQGMO_NO_WAIT 加 MQGMO_PROPERTIES_AS_Q_DEF。

属性选项

下列选项与消息属性相关:
MQGMO_PROPERTIES_AS_Q_DEF

除消息描述符(或扩展)中包含的属性之外的消息属性必须按照 PropertyControl 队列属性所定义的方式来表示。 如果提供了 MsgHandle ,那么将忽略此选项,并且除非 PropertyControl 队列属性的值为 MQPROP_FORCE_MQRFH2,否则将使用 MsgHandle来提供消息的属性。

如果未指定属性选项,那么这是缺省操作。

MQGMO_PROPERTIES_IN_HANDLE

必须通过 MsgHandle 来提供消息属性。 如果未提供消息句柄,那么调用将失败,原因为 MQRC_HMSG_ERROR

MQGMO_NO_PROPERTIES

将不会检索除消息描述符(或扩展)中包含的属性之外的消息属性。 如果提供了 MsgHandle,那么会将其忽略。

MQGMO_PROPERTIES_FORCE_MQRFH2

除消息描述符(或扩展)中包含的属性之外的消息属性必须使用 MQRFH2 头来表示。 对于期望检索属性但无法更改为使用消息句柄的应用程序,这可提供与较早版本的兼容性。 如果提供了 MsgHandle,那么会将其忽略。

MQGMO_PROPERTIES_COMPATIBILITY
如果消息包含前缀为 "mcd.""jms.""usr.""mqext."的属性,那么所有消息属性都将通过 MQRFH2 头传递到应用程序。 否则,将丢弃除消息描述符(或扩展)中包含的属性之外的所有消息属性,并且应用程序无法再访问这些属性。

缺省选项

如果不需要上述任何选项,那么可以使用以下选项:
MQGMO_NONE
使用此值来指示未指定任何其他选项;所有选项均采用其缺省值。 MQGMO_NONE 可帮助编写程序;此选项不应与其他任何选项一起使用,但由于其值为零,所以系统无法检测到此类使用情况。