Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache camel 忽略Camel-Spring引导中的一些路由生成器组件_Apache Camel - Fatal编程技术网

Apache camel 忽略Camel-Spring引导中的一些路由生成器组件

Apache camel 忽略Camel-Spring引导中的一些路由生成器组件,apache-camel,Apache Camel,Camel-Spring引导扫描routebuilder的Spring上下文。F: 驼峰自动配置从中收集所有RouteBuilder实例 Spring上下文,并自动将它们注入到提供的 背景。这意味着要用Spring创建新的骆驼路线 启动启动程序非常简单,只需将@Component注释类添加到 你的类路径 有没有一种方法可以控制这一点:包括/排除包或类 我想对某些RouteBuilder进行注释,并将其排除在外。我的目的是以后动态地将它们添加到CamelContext中。您可以使用这些属性,这些属

Camel-Spring引导扫描routebuilder的Spring上下文。F:

驼峰自动配置从中收集所有RouteBuilder实例 Spring上下文,并自动将它们注入到提供的 背景。这意味着要用Spring创建新的骆驼路线 启动启动程序非常简单,只需将@Component注释类添加到 你的类路径

有没有一种方法可以控制这一点:包括/排除包或类


我想对某些RouteBuilder进行注释,并将其排除在外。我的目的是以后动态地将它们添加到CamelContext中。

您可以使用这些属性,这些属性设置为SpringBootTest注释

  • java路由inlcude模式-在测试中包含路由的模式
  • java routes exclude pattern—在测试中排除路由的模式
这些是ant样式的属性,可以在src文件夹中搜索匹配的RouteBuilder

模式示例:

修复类示例:

java路由排除模式的工作方式相同,只是排除了列出的路由生成器

希望这有帮助

问候

Chris

为什么不在需要时注入CamelContext(Spring Boot为您创建)和addRoutes()?这些路由是Spring组件。因为我使用的是Camel Spring Boot,所以它做了一件神奇的事情:它在Spring上下文中检查bean,寻找RouteBuilder。我不是骆驼专家,但从我的观点来看,所有动态创建路线、开始停止路线等的技巧都很糟糕,并且会出现意外错误。我认为路线应该在创业、生活和投票时确定,直到最后。但是,如果你需要更多的控制,有一个选择。定义从“direct:someLabel”开始的路由,并使用producerTemplate向其发送消息(它可以是Spring组件,也可以不是Spring组件,这无关紧要)。为什么不从RouteBuilder中删除
@component
注释呢?如果没有注释,RouteBuilder将不会被发现,您可能需要将.autostart(false)添加到路由定义中,然后稍后通过ControlBus启动它。
// Fix test runner
@RunWith(CamelSpringBootRunner.class)
// Your spring boot application with the main method
@SpringBootTest(classes = {SpringBootTestRunner.class},  
    // Finds all routes in your whole src folder that start with 'SomeRoute', e.g. SomeRouteOne
    properties = {"camel.springboot.java-routes-include-pattern=**/SomeRoute*"})
public class SomeRouteOneTestCase {
    ...   // Unit Tests
}
// Fix test runner
@RunWith(CamelSpringBootRunner.class)
// Your spring boot application with the main method
@SpringBootTest(classes = {SpringBootTestRunner.class},
    // Find the RouteBuilder 'SomeRouteTwo' in the package 'com.foo.bar' and nothing more
    properties = {"camel.springboot.java-routes-include-pattern=com/foo/bar/TestRouteTwo"})
public class TestRouteTwoTestCase {
    ...   // Tests
}