2012-06-21 36 views
1

這裏採用的情況下我米試圖解決 - 所以這是一個擴展,我先前的線程,Apache camel to aggregate multiple REST service responses是否有可能將不同的url參數傳遞給Camel Multicast EIP中的各個端點?

我使用自定義聚合策略多播組件叉到達請求到子請求和彙總他們的迴應。一切正常,直到這一點。

現在,我希望傳入的URL參數有選擇地傳遞給一些子服務。例如:

傳入的請求 - http://[host]/my-service/scan?foo=a&bar=b&baz=c

我多播組件是這樣的 -

<multicast strategyRef="myAggregationStrategy" parallelProcessing="true"> 
    <to REST_service_1"/> 
    <to REST_service_2"/> 
</multicast> 

我想通過只富= a到SERVICE_1端點和酒吧= B &巴茲= C到service_2端點。

現在,使用多播將同一組請求查詢參數傳遞給service_1和service_2。即兩個SERVICE_1和service_2將接收富=一個&欄= B &巴茲= C(整個查詢參數)

選項我米思(高電平) -
-to打破傳入的URL參數,並堅持它們作爲然後我可以有選擇地使用這些標頭爲每個人建立CamelHttpQuery標題「to service_call」

- 但最後,Exchange將在所有多點傳送終端之間共享,所以這種方法是否可以工作?

- 我應該退後一步,爲這個特殊用例考慮不同的EIP嗎?

- 或者我想錯了方向:)

欣賞投入!謝謝!

+0

你有沒有看看基於內容的路由器EIP?它可能是你正在尋找的東西。 – Namphibian

回答

2

您可以使用收件人列表EIP代替,然後您可以有2個不同的uris用於REST服務呼叫,但發送與多播一樣的消息。

收件人列表還支持並行和聚合。

http://camel.apache.org/recipient-list.html

要計算2點的URI您可以使用Java bean並做了方法調用expresison休息服務,並只返回由逗號分隔的2個端點的String(或String [],或列表等)

<recipientList strategyRef="myAggregationStrategy" parallelProcessing="true"> 
    <method ref="myBean" method="whereToSend"/> 
</recipientList> 
+0

感謝您的指針。我需要閱讀更多關於這個EIP和Bean組件。但看起來我可以用這個信息作爲主角.. – Rishi

相關問題