顾名思义,变压器是一种用来转换消息的组件。例如,变压器可以修改消息主体或添加或删除属性。 分流核心桥接 都支持变压器。

变压器只是一个实现了 org.apache.activemq.artemis.core.server.transformer.Transformer 接口的类。

public interface Transformer {

   default void init(Map<String, String> properties) { }

   Message transform(Message message);
}

init 方法在代理实例化类之后立即被调用。有一个默认方法实现,所以实现 init 是可选的。但是,如果变压器需要任何配置属性,它应该实现 init,代理将使用 java.util.Map 将配置的键值对传递给变压器。

1. 配置

最基本的配置只需要指定变压器的类名,例如:

<transformer-class-name>
   org.foo.MyTransformer
</transformer-class-name>

但是,如果变压器需要任何配置属性,可以使用稍微不同的语法来指定,例如:

<transformer>
   <class-name>org.foo.MyTransformerWithProperties</class-name>
   <property key="transformerKey1" value="transformerValue1"/>
   <property key="transformerKey2" value="transformerValue2"/>
</transformer>

任何变压器实现都需要添加到代理的类路径中。有关如何使您的变压器可供代理使用,请参阅关于 添加运行时依赖项 的文档。