我需要在运行时在Apache Camel
应用程序中添加/删除Spring Boot
路由。这意味着应在应用程序运行时更新路由。这也意味着我在应用程序的第一次运行期间没有所有路由,并且无法重新启动它来获取它们。
我找到了旧答案,但仍然不明白如何使用xml
定义的路线来实现。你能解释一下怎么做吗?
最佳答案
将您的xml放在src / main / resources下,并调用以下组件:
@Component
public class CamelRoutesLoader {
@Autowired
private CamelContext camelContext;
@Value("${camel-routes-filename:#{null}}")
private String routesFilename;
@PostConstruct
private void loadRoutes() {
if(routesFilename == null) {
//error no file name
}
try {
InputStream is = this.getClass().getClassLoader().getResource(routesFilename).openStream();
RoutesDefinition routes = ModelHelper.loadRoutesDefinition(camelContext, is);
camelContext.addRouteDefinitions(routes.getRoutes());
} catch(Exception e) {
//Impossible to load routes
}
}
}
我在Spring初始化之后调用了我的组件,但是您可以删除@PostConstruct,将其公开并传递给文件名