我想知道在给定路线中对消息正文进行简单转换的最佳解决方案是什么。正文将是CSV,如果满足某些条件,我想修改一些字段。我想知道在开始编写自己的处理器之前是否有任何可以使用的内置功能。</ p>
我一直在研究Camel支持的脚本语言,但我找不到一个好的例子。我相信这可以通过使用Groovy或其他脚本语言的表达式来完成,但我需要一些指导。
有人可以帮助我吗?
谢谢!
答案 0 :(得分:2)
实际上有两件事。以结构化方式访问(解组/编组)CSV数据,然后执行实际逻辑以转换数据。
您可以使用CSV数据格式(或flatpack)将您的CSV数据放入List列表中,您可以在普通的Java bean中轻松操作(如果需要,还可以使用groovy)。然后,您可以获取结果并通过相同的组件再次将其转换为CSV。
如果您有大型CSV结构和非常复杂的转换 - 您可能希望将CSV文件映射到对象列表而不是列表列表。您可以为输入和输出数据定义类,然后使用Bindy组件将这些类绑定到CSV行。然后,在中间你只需要处理映射java对象的字段,这是相当直接的。如果你想深入研究用于将一个java对象映射到另一个java对象的框架,你可以看看Dozer这是非常好的(但在大多数情况下都是矫枉过正的)。
正如您所说,您可以使用groovy或类似的实际映射。它应该是相当直接的,即使我不知道关于这个主题的很多例子。
<transform>
<groovy> response.f1 = request.f2 </groovy>
</transform>
您可以在其中获得对象请求和响应。
另一种方法是使用更大的框架Smooks。它处理许多不同数据格式之间的解析和映射。它不是Camel的一部分,但Smooks内置了Camel支持并且是开源的。如果只做一些较小的映射,可能会有点过分,但如果你反复处理复杂的映射方案,可能是值得的。