消息转换

特性 > 消息特性 > 消息转换

消息转换

有时在 JMS 提供者内部转换消息非常有用。例如,您可能有一个已经运行了一段时间的应用程序,它使用 ObjectMessage 消息,但您希望将其转换为使用 XML 负载(以保护自己免受序列化问题的影响)。

因此,从 4.2 版本开始,ActiveMQ Classic 提供了一个可插拔的策略,称为 MessageTransformer 接口。这允许您

  • 在消息发送到 JMS 提供者内的消息总线之前,丰富或转换消息
  • 在消息从消息总线接收但尚未分派到消费者之前,丰富或转换消息

因此,这允许您使用某种 XML 编组技术(如 XStreamJAXB2)将 ObjectMessage 转换为包含 XML 的 TextMessage。

例如,存在 XStreamMessageTransformer,当它在 ConnectionFactory 上配置时,将导致所有 ObjectMessage 实例在网络上自动转换到 TextMessage 实例,反之亦然。如果您有非 Java 客户端希望与您的 Java 消息进行通信,这将非常有用。

使用 MessageTransformer

要使用 MessageTransformer,您可以通过 setTransformer() 方法将其安装在以下类之一上

转换器会继承到子对象上;因此,您可以在连接工厂上安装特定的转换器,它将继承到所有连接、会话、生产者、消费者上

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛徽标和 Apache ActiveMQ 项目徽标是 Apache 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据 Apache 许可证 2.0 许可。