一個類似的,但更一般的問題已在這裏問: Business logic in Camel processors vs service endpoints。Apache Camel - 從處理器內發出HTTP請求
現在考慮下面的流程(E1和E2代表處理器,它們不是端點如在駱駝流),其餘與參數觸發(P,Q):
Route: E1 -> E2
E1本身問題與參數(p,q)一個HTTP請求,接收到該響應數據d(同步)和轉發給E2,繼續基於處理(p,q,d) 。因此,它基本上豐富了附加數據的輸入。
被調用的端點包含要整合的數據,即這不會改變,並且將來不需要配置。
我嘗試了兩種解決方案,這兩者似乎有種我錯了:在消息(或者1的可替代性的標題
- 使用
http4:url
端點和搭載了(P,Q)交換)。 - 使用顯式/編程方式發出http請求的處理器,處理響應並轉發預期的(p,q,d)。爲了方便起見,我在駝峯背景下將
producerTemplate
發送給http4:url
。
第一個問題是,它增加了許多樣板製造商等,使實際的路線真正晦澀。第二種方法允許將處理卸載到新類中(而不是將其混合到路由中),但仍需要駱駝上下文並取決於此。
這是什麼建議。我無法找到周圍任何東西,除了像等「不與配線混合的商業邏輯」更抽象的語句
*增加了實際使用案例*
E1得到兩個日期(時間跨度)和部門名稱,可獲取指定時間段內指定部門中的所有名稱。然後(上面我忽略了這個細節)名稱被分割,並且對於每個單獨的名稱,所有數據都被保存在指定的日期範圍內。對於最後一步,需要輸入第一個日期(因此這些需要通過整個路線)。
感謝, 馬庫斯
你說的是豐富的E2的消息,再看看在內容富集EIP –
我要豐富它的E1,並將其轉發到E2。也許我應該提一下,E1和E2不是端點,而是處理器 - 我添加了真實的用例 – fricke
本質上,它是我需要的一個豐富的東西。但在這裏,我的問題是如何實現處理器實現這種豐富,即如果可以在處理器內使用templateProducer?或者我應該試着讓這個處理器獨立於駱駝環境。 – fricke