Camel动态增加路由

Camel提供了两种定义路由的形式,

一种是JAVADSL我们定义一个RoutBuilder 在config里面定义form("bean:a").to("bean:b")

还有一种是SPringDSL 通过XML的形式来配置.

如果我们需要在应用启动后来动态的增加或者修改路由该怎么办呢.

可以通过与beanShell的配合达到上述目的,

首先定义好一个RouteDefinition对象rd,放入beanShell的执行器Interpreter中,

写好路由定义脚本采用javaDSL : rd.from("bean:a).to("bean:ss")

执行脚本,然后camel容器再加载rd即可.

 

代码如下:

?
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")

如果觉得这样不简洁的话,还可以采用自定义Component的形式来解决这个问题.

你可能感兴趣的:(camel,动态增加路由)