哪种Camel构造适合转换?

6 java esb apache-camel

Apache Camel提供了几种执行数据转换的方法:Transform EIP的概念,自定义DataFormats,以及自定义类型转换器的容差.

我有一种情况需要从Camel路径内部进行非常复杂的转换.我应该实现自己的Type Converter,我自己的DataFormat,还是应该实现org.apache.camel.Expression并将所有转换内容放在那里:

public class MyTransformer implements Expression {
    @Override
    public <T> T evaluate(Exchange arg0, Class<T> arg1) {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我想我很困惑在何时/什么时候使用你自己的Type Converter,何时使用.transform(myTransformer)处理器,或何时使用自定义DataFormat.提前致谢!

Jak*_*rab 10

差异很微妙,尽管它们都用于不同的事物.你应该使用:

  • 将"业务负载"从一种形状转换为另一种形状时的变压器.例如,当您将从DAO提取的值对象转换为将用于调用Web服务的JAXB带注释的对象时.
  • 当您想要将高级表示(例如某种类型的Object)编组到较低级别的表示中时的数据格式 - 您将通过线路发送的内容.数据格式包括序列化,Google协议缓冲区,JSON,JAXB等.
  • 更改访问消息表示的方式时的类型转换器.例如,字符串和字节数组或InputStream仍然读取相同的字符,因此您可以编写(尽管实际上有内置的)转换器,它们可以在这两个字符之间进行转换.