在 send () 或 publish () 处映射 JMS 头字段
这些注释与 send () 或 publish () 处 JMS 字段的映射相关。
- JMSDestination 到 MQRFH2
- 这将存储为字符串,用于序列化目标对象的显著特征,以便接收 JMS 可重构等效的目标对象。 MQRFH2 字段编码为 URI (请参阅 统一资源标识 (URI) 以获取 URI 表示法的详细信息)。
- JMSReplyTo 到 MQMD.ReplyToQ、ReplyToQMgr 和 MQRFH2
- 队列名称复制到 MQMD.ReplyToQ 字段,队列管理器名称复制到 ReplyToQMgr 字段。 目标扩展信息(保存在目标对象中的其他有用的详细信息)复制到 MQRFH2 字段。 MQRFH2 字段编码为 URI (请参阅 统一资源标识 (URI) 以获取 URI 表示法的详细信息)。
- JMSDeliveryMode 到 MQMD.Persistence
- JMSDeliveryMode 值由 send() 或 publish() 方法或 MessageProducer 来设置,除非“目标对象”覆盖它。 JMSDeliveryMode 值映射到 MQMD.Persistence 字段,如下:
- JMS 值 PERSISTENT 等同于 MQPER_PERSISTENT
- JMS 值 NON_PERSISTENT 等同于 MQPER_NOT_PERSISTENT
- JMSExpiration 到/从 MQMD.Expiry、MQRFH2
- JMSExpiration 存储到期时间(当前时间和生存时间之和),而 MQMD 存储生存时间。 同样,JMSExpiration 单位为毫秒,但 MQMD.Expiry 单位为十分之一秒。
- 如果 send() 方法用于设置无限的生存时间,那么 MQMD.Expiry 将设置为 MQEI_UNLIMITED,并且 MQRFH2 中未对 JMSExpiration 进行编码。
- 如果 send() 方法用于设置小于 214748364.7 秒(约 7 年)的生存时间,那么生存时间将存储在 MQMD.Expiry 中,并且到期时间(毫秒)将在 MQRFH2 中编码为 i8 值。
- 如果 send() 方法用于设置大于 214748364.7 秒的生存时间,那么 MQMD.Expiry 将设置为 MQEI_UNLIMITED。 真实的到期时间(毫秒)在 MQRFH2 中编码为 i8 值。
- JMSPriority 到 MQMD.Priority
- 将 JMSPriority 值 (0-9) 直接映射到 MQMD 优先级值 (0-9) 上。 如果将 JMSPriority 设置为非缺省值,那么还将在 MQRFH2 中对优先级进行编码。
- 从 MQMD.MessageID 到 JMSMessageID
- 从 JMS 发送的所有消息都具有由 IBM® MQ分配的唯一消息标识。 调用 MQPUT 后,MQMD.MessageId 字段中将返回分配值,并传回到 JMSMessageID 字段中的应用程序。 IBM MQ messageId 是 24 字节的二进制值,而 JMSMessageID 是字符串。 JMSMessageID 由转换为一连串 48 个十六进制字符且以字符标识开头的二进制 messageId 值组成: JMS 提供了可以设置为禁止生成消息标识的提示。 此提示会被忽略,并且在所有情况下均会分配唯一的标识。 任何在 send() 前设置到 JMSMessageID 字段的值都会被覆盖。
- JMSTimestamp 到 MQRFH2
- send 期间,将根据 JVM 时钟设置 JMSTimestamp 字段。 此值将设置到 MQRFH2。 任何在 send() 前设置到 JMSTimestamp 字段的值都会被覆盖。 另请参阅 JMS_IBM_PutDate 和 JMS_IBM_PutTime 属性。
- JMSType 到 MQRFH2
- 此字符串设置到 MQRFH2 mcd.Type 字段。 如果它采用 URI 格式,可能还会影响 mcd.Set 和 mcd.Fmt 字段。
- JMSCorrelationID 到 MQMD.CorrelId、MQRFH2
- JMSCorrelationID 可保留下列其中一项:
- 特定于提供程序的消息标识
- 这是来自先前发送或接收的消息的消息标识,此标识应该是包含 48 位小写十六进制数字的字符串(带有
ID:前缀)。去掉前缀后,剩余字符将转换为二进制字符,然后将它们设置为 MQMD.CorrelId 字段。 - provider-native byte[] 值
- 值将复制到 MQMD.CorrelId 字段 - 填补空,或在需要时截断到 24 个字节。 未在 MQRFH2 中对 CorrelId 值编码。
- 特定于应用程序的字符串
- 值将复制到 MQRFH2。 字符串的前 24 个字节将写入 MQMD.CorrelID(采用 UTF8 格式)。