MQ 获取消息选项
MQ 获取消息选项用于控制 MQGET 的操作。
您可以不指定本节中随后描述的选项,也可以指定其中一个或多个选项。如果您需要多个选项,那么这些值可以是:
- 相加(不要多次将相同常量相加),或者
- 使用按位 OR 运算来组合(如果编程语言支持位运算)。
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 帮助编写文档;此选项并不旨在与其他任何选项配合使用,但由于其值为零,将无法检测到这种用法。