簡體   English   中英

在Apache Camel中修改主體的最佳方法?

[英]Best approach to modify body in Apache Camel?

我想知道在給定路徑中對消息正文進行簡單轉換的最佳解決方案是什么。 正文將是CSV,如果滿足某些條件,我想修改一些字段。 我想知道在開始編寫自己的處理器之前是否有任何可以使用的內置功能。

我一直在看看Camel支持的腳本語言,但我找不到一個好的例子。 我相信這可以使用Groovy或其他腳本語言使用Expressions來完成,但我需要一些指導。

有人可以幫幫我嗎?

謝謝!

實際上有兩個不同的東西。 以結構化方式訪問(解組/編組)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支持並且是開源的。 如果只做一些較小的映射,可能會有點過分,但如果你反復處理復雜的映射方案,可能是值得的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM