忽略 Camel Spring Boot 中的一些 Route Builder 组件

Dar*_* X. 5 apache-camel

Camel Spring Boot 扫描 RouteBuilder 的 Spring 上下文。˚F ROM中的文档

Camel 自动配置从 Spring 上下文中收集所有 RouteBuilder 实例,并自动将它们注入到提供的 CamelContext 中。这意味着使用 Spring Boot starter 创建新的 Camel 路由就像将 @Component 注释类添加到类路径一样简单

有没有办法控制这个:包含/排除包或类。

我想注释某些 RouteBuilders 并让 Camel 排除它们。我的意图是稍后将它们动态添加到 CamelContext 中。

Chr*_*ris 6

您可以使用这些设置为 SpringBootTest Annotation 的属性。

  • java-routes-inlcude-pattern - 在测试中包含路由的模式
  • java-routes-exclude-pattern - 在测试中排除路由的模式

这些是通过src文件夹搜索匹配RouteBuilderant 样式属性

模式示例:

// 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
}
Run Code Online (Sandbox Code Playgroud)

修复类示例:

// 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
}
Run Code Online (Sandbox Code Playgroud)

java-routes-exclude-pattern以相同的方式工作,只是排除列出的路由构建器。

希望这可以帮助。

问候
克里斯