JMS 消息转换

JMS 中的消息数据转换在发送和接收消息时执行。 IBM® MQ 会自动执行大多数数据转换。 在 JMS 应用程序之间传输消息时,它会转换文本和数字数据。 当JMS应用程序和 IBM MQ 应用程序之间交换 JMSTextMessage 时,文本会被转换。

如果您计划完成更复杂的消息交换,那么您会对以下主题产生兴趣。 复杂消息交换包括:
  • IBM MQ 应用程序和 JMS 应用程序之间传输非文本消息。
  • 交换采用字节格式的文本数据。
  • 在应用程序中转换文本。

JMS 消息数据

数据转换是在应用程序之间 (甚至在两个 JMS 应用程序之间) 交换文本和数字数据所必需的。 必须对文本和数字的内部表示进行编码,以便其能够在消息中传输。 编码过程会强制您决定如何表示数字和文本。 IBM MQ 管理 JMS 消息中文本和数字的编码,但 JMSObjectMessage除外,请参阅 JMSObjectMessage。 它使用三个消息属性。 这三个属性是 CodedCharacterSetIdEncodingFormat

这三个消息属性通常存储在 JMS 消息的 JMSMQRFH2字段中。 如果消息类型是 MQ,而不是 JMS 类型的消息,那么属性将存储在消息描述符 MQMD中。 这些属性用于转换 JMS 消息数据。 JMS 消息数据在 IBM MQ 消息的消息数据部分中传输。

JMS 消息属性

JMS 消息属性 (例如 JMS_IBM_CHARACTER_SET) 将在 JMS 消息的 MQRFH2 头部分中进行交换,除非已在没有 MQRFH2的情况下发送消息。 只有 JMSTextMessageJMSBytesMessage 可以在没有 MQRFH2的情况下发送。 如果 JMS 属性作为 IBM MQ 消息属性存储在消息描述符 MQMD中,那么会将其作为 MQMD 转换的一部分进行转换。 如果 JMS 属性存储在 MQRFH2中,那么它将存储在 MQRFH2.NameValueCCSID指定的字符集中。 发送或接收消息时,消息属性会在 JVM 中转换为其内部表示,或从其内部表示进行转换。 将转换为消息描述符的字符集或 MQRFH2.NameValueCCSID,或从中进行转换。 数字数据转换为文本。

JMS 消息转换

以下主题包含当您计划交换需要转换的更复杂消息时将非常有用的示例及任务。