Camel動態增長路由

Camel提供了兩種定義路由的形式, html

一種是JAVADSL咱們定義一個RoutBuilder 在config裏面定義form("bean:a").to("bean:b") java

還有一種是SPringDSL 經過XML的形式來配置. app

若是咱們須要在應用啓動後來動態的增長或者修改路由該怎麼辦呢. ui

能夠經過與beanShell的配合達到上述目的, spa

首先定義好一個RouteDefinition對象rd,放入beanShell的執行器Interpreter中, orm

寫好路由定義腳本採用javaDSL : rd.from("bean:a).to("bean:ss") htm

執行腳本,而後camel容器再加載rd便可. 對象

 

代碼以下: blog

?
1
2
3
4
5
6
7
8
String script ="rd.from(\"bean:a\").to(\"bean:b\")";
Interpreter scriptInterpreter =newInterpreter();
scriptInterpreter.set("rd", rd);
scriptInterpreter.eval(script);
scriptInterpreter.eval(script);
rd.setId("RD1001");//給路由設置ID
rd.markPrepared();
camelContext.startRoute(rd);

固然在腳本定義路由時不能直接用camel提供的一些表達式,如bean(),simple()等.須要寫成rd.from("bean:b").rd.bean("c") ip

若是以爲這樣不簡潔的話,還能夠採用自定義Component的形式來解決這個問題.

相關文章
相關標籤/搜索