對於這類問題沒有一個有效的答案,因爲它在很大程度上取決於您的應用程序。一般來說,擁有較小的路線可以很容易地測試您的應用程序和重用邏輯。
您可以重構這樣
<camelContext>
<route>
<!-- route starts somehow -->
<choice>
<onWhen>
<simple>${property.name} == 'foo'</simple>
<to uri="direct:handleFoo" />
</onWhen>
<onWhen>
<simple>${property.name} == 'bar'</simple>
<to uri="direct:handleBar" />
</onWhen>
</choice>
</route>
<route id="ThisRouteWillHandleFooCase">
<from uri="direct:handleFoo" />
<to uri="..." />
<!-- do stuff for foo here -->
</route>
<route id="ThisOtherRouteIsForBarCase">
<from uri="direct:handleBar" />
<to uri="..." />
<!-- do stuff for bar here" -->
</route>
</camelContext>
的direct:
組件使得它像調用Java方法您的路線,這是其他途徑直接和同步調用。現在您可以輕鬆測試foo的行爲以及bar的行爲。
現在想象一下,您需要更新數據庫或經常進行Web服務調用:最好有一個單獨的路由來完成這個工作並多次調用它。
非常感謝您的回答非常明確,但我想知道直接使用是否有效?它如何在後臺工作?我想讓我的代碼容易進行單元測試,但我不直接使用,因爲我不知道它的工作原理 –