我有一些問題有以下途徑:Apache的駱駝EIP路線 - 如何停止分裂()
// from("cxf:....")...
from("direct:start").process(startRequestProcessor) // STEP 1
.choice()
.when(body().isNull())
.to("direct:finish")
.otherwise()
.split(body()) // STEP 2
.bean(TypeMapper.class) // STEP 3
.log("Goes to DynamicRouter:: routeByTypeHeader with header: ${headers.type}")
.recipientList().method(Endpoint1DynamicRouter.class, "routeByTypeHeader") // STEP 4
.ignoreInvalidEndpoints();
from("direct:endpoint2") // STEP 6
.log("Goes to DynamicRouter::routeByCollectionHeader with header: ${headers.collection}")
.recipientList().method(Endpoint2DynamicRouter.class, "routeByCollectionHeader")
.ignoreInvalidEndpoints();
from("direct:endpoint1.1") // STEP 5
.process(new DateRangeProcessor())
.to("direct:collections");
from("direct:endpoint1.2") // STEP 5
.process(new SingleProcessor())
.to("direct:collections");
from("direct:endpoint2.2") // STEP 7
.aggregate(header("collection" /** endpoint2.2 */), CollectionAggregationStrategy)
.completionSize(exchangeProperty("endpoint22"))
.process(new QueryBuilderProcessor())
.bean(MyService, "getDbCriteria")
.setHeader("collection", constant("endpoint2.1"))
.to("direct:endpoint2.1").end();
from("direct:endpoint2.1") // STEP 8
.aggregate(header("collection" /** endpoint2.1 */), CollectionAggregationStrategy)
.completionSize(exchangeProperty("CamelSplitSize"))
.to("direct:finish").end();
from("direct:finish")
.process(new QueryBuilderProcessor())
.bean(MyRepository, "findAll")
.log("ResponseData: ${body}").
marshal().json(JsonLibrary.Gson).end();
路線
- 接收JSON字符串的轉換它列出的(HashSet的)一個JSONObjects。
- 將收到的列表拆分爲json對象。
- 設置根據對象內容
- 路線根據報頭中的消息以endpoint1.1或endpoint1.2
- 轉換消息的MongoDB標準和發送根據另一頭向端點2
- 端點2將消息路由報頭對應端點2.1或端點2.2。
- Endpoint2.2聚合所有收到的消息,對其進行處理以獲取mongodb Criteria並將其發送到端點2.1(completionSize在步驟2中計算並保存在屬性「endpoint22」中)。
- Enpoint2.1聚合所有消息(CamelSplitSize)將聚合消息轉換爲Query對象並將其發送到Repository以檢索數據。
我可以看到有效的響應對象的調試器,但無論如何我得到一個錯誤:
No message body writer has been found for class java.util.HashSet, ContentType: application/json
問題不響應對象作爲它的工作原理與其他路由,它不包含HashSets。
我的猜測是,路線發送到HashSet的創建達STEP 1的輸出...
我的問題是:
- 什麼是錯在路由輸出?
兩個recipientList()嘗試 郵件轉發到無效的端點(我必須使用.ignoreInvalidEndpoints(),以避免除外):
org.apache.camel.NoSuchEndpointException: No endpoint could be found for: [email protected], please check your classpath contains the needed Camel component jar.
任何幫助,將不勝感激! 謝謝。