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 可帮助编写程序;此选项不应与其他任何选项一起使用,但由于其值为零,所以系统无法检测到此类使用情况。