2015-11-01 33 views
1

我有2個基於資源的服務以JSON格式返回數據。結合使用駱駝的JSON服務響應

第一個是訂單服務,它返回訂單details.This包含orderid和產品列表,包括產品id和它的數量。

另一種是產品服務,它返回產品作爲輸入傳遞給它的產品的產品詳細信息(描述,單價)。

我想將這兩項服務結合起來使用駝峯路線,以便路線響應將是訂單中每個產品的產品詳細信息(描述,單價,數量,數量*單價)。

由於兩個服務分別返回JSON不知道如何將它們結合在一起返回最終結果。

我想我必須將每個服務的JSON響應轉換爲java對象,然後根據需要使用POJO計算細節,然後最終將響應轉換回JSON並返回結果。

但是,不知道這是駱駝的正確方法還是有辦法直接使用單獨的JSON響應並將它們組合並返回響應。

有人可以幫助我做到這一點。

+0

看看內容Enricher EIP模式 –

回答

-1

難道你不能簡單地有兩條路線?

路由1:調用訂單服務並將響應發送到處理器,並提取產品ID並將其保存在某個標頭中。

路線2:使用您從前一條路線獲得的標題中找到的產品ID調用產品服務。此處的回覆爲您提供了路線2中收到的每個產品ID的產品詳細信息。

0

您應該使用content-enrich模式作爲Claus建議,然後將產品服務的響應與訂單服務的響應正文進行彙總。

from("direct:in") 
    .to("http://order.service:8080") 
    .enrich(simple("http:product.service/?productIds=${header.productIds}"), new OrderProductAggregationStrategy());