2011-09-24 17 views
2

除了其他信息(認爲地址,客戶詳細信息等)之外,我有一條消息攜帶包含多個同質節點(認爲產品列表)的XML(訂單)。我必須通過其他外部服務提供的細節豐富每個「產品」,並將豐富的「產品」返回相同的完整XML'訂單'消息。拆分,充實和放回一起

我想出了該序列的步驟:

  1. 拆分原始XML使用XPath分離消息(也保持原來的消息)
  2. 富民具有附加數據
  3. 穿戴富集部件分割的消息通過替換舊元素回到原始消息。

我試圖通過發送原始消息發送到使用多播到端點,其中分裂和富集完成和聚集的端點,其中原始消息和分豐富消息是聚集體,然後傳遞到處理器,其負責結合這些部件回到單個xml文件。但我無法達到預期的效果...

什麼是解決此問題的正確方法?

+0

爲什麼你需要把消息拆分成單獨的郵件?你能分階段豐富原始信息嗎?沒有分散/收集方法? –

回答

5

Camel中的Splitter EIP可以將消息聚合回來(作爲組合消息處理器EIP)。 http://camel.apache.org/splitter

看到這部影片這表明這樣的用例 http://davsclaus.blogspot.com/2011/09/video-using-splitter-eip-and-aggregate.html

+0

我們確實使用聚合,但我們仍然需要聚合點處的原始消息。這是我們遇到麻煩的地方。 –

+3

您可以將原始郵件作爲屬性存儲在交換機上,然後在AggregationStrategy中獲取。 –