訊息轉換
訊息轉換
在 JMS 提供者內部轉換訊息有時很有用。例如,您可能有一個已上線一段時間的應用程式,它使用 ObjectMessage 訊息,但您希望將其轉換為使用 XML 負載(以保護自己免受序列化問題的影響)。
因此,ActiveMQ Classic 4.2 版本開始提供了一個可插拔的策略,稱為 MessageTransformer 介面。這允許您
- 在訊息傳送到 JMS 提供者內的訊息匯流排之前,豐富或轉換訊息
- 在訊息從訊息匯流排接收,但在發送到消費者之前,豐富或轉換訊息
因此,這允許您使用某種 XML 編組技術(如 XStream 或 JAXB2)將 ObjectMessage 轉換為包含 XML 的 TextMessage。
例如,有一個 XStreamMessageTransformer,當它在 ConnectionFactory 上配置時,會導致所有 ObjectMessage 實例在傳輸過程中靜默地轉換為 TextMessage 實例。如果您有非 Java 用戶端希望與您的 Java 訊息通信,這可能非常有用。
使用 MessageTransformer
要使用 MessageTransformer,您可以透過 setTransformer() 方法將其安裝在以下類別之一上
- ActiveMQConnectionFactory
- ActiveMQConnection
- ActiveMQSession
- ActiveMQMessageConsumer
- ActiveMQMessageProducer
轉換器會在其子物件上繼承;因此您可以在連接工廠上安裝特定的轉換器,它將在所有連接、會話、生產者、消費者上繼承