Apache Camel中修改主体的最佳方法



我想知道对给定路由中的消息体进行简单转换的最佳解决方案是什么。正文将是CSV,如果满足某些条件,我想修改一些字段。在开始编写自己的处理器之前,我想知道是否有任何内置功能可以使用。

我一直在研究Camel支持的脚本语言,但一直找不到一个好的例子。我相信这可以通过使用Groovy或其他脚本语言的表达式来完成,但我需要一些指导。

有人能帮我吗?

谢谢!

实际上有两个独立的东西。以结构化的方式访问(解组/封送)CSV数据,然后执行实际的逻辑来转换数据。

您可以使用CSV数据格式(或flatpack)将CSV数据放入List of List中,您可以在普通Java bean中轻松地对其进行操作(如果需要,也可以使用groovy)。然后,您可以通过相同的组件将结果再次转换为CSV。

如果您有大型CSV结构和非常复杂的转换,您可能希望将CSV文件映射到对象列表,而不是字符串列表。您可以为输入和输出数据定义类,然后使用Bindy组件将这些类绑定到CSV行。然后,在中间,您只需要处理java对象的字段映射,这是非常直接的。如果你想深入研究将一个java对象映射到另一个对象的框架,你可以看看Dozer,它非常好(但在大多数情况下过于夸张)。

正如您所说,您可以使用groovy或类似的方法进行实际映射。尽管我不知道有多少关于这个主题的例子,但它应该是直截了当的。

<transform>
  <groovy> response.f1 = request.f2  </groovy>
</transform>

在其中您可以获得对象请求和响应。

另一种方法是使用更大的框架Smooks。它处理许多不同数据格式之间的解析和映射。它不是Camel的一部分,但Smooks内置了Camel支持,并且是开源的。如果你只做几个较小的映射,可能会有些过头了,但如果你反复处理复杂的映射场景,这可能是值得的。

相关内容

最新更新