我需要在运行时在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,将其公开并传递给文件名

10-07 17:08