如何删除Apache Camel中的端点拦截器

时间:2018-01-11 19:10:32

标签: java apache-camel

例如,我们有一个id为“id”的路由。

       from("direct:third")
          .to("mock:bar")
          .to("mock:foo")
          .to("mock:result");

我们还有单元测试。每个测试都会将自己的拦截器添加到端点,如下所示:

context.getRouteDefinition("id").adwiseWith(new RouteBuilder() {
   @Override
   public void configure() throws Exception {

       interceptSendToEndpoint("mock:foo").skipSendToOriginalEndpoint()
          .log("Bye World").to("mock:detour");

    }
});

是否可以在不重新加载整个驼峰上下文的情况下禁用/删除先前测试方法中添加的拦截器? (应用程序有很多路由,需要很长时间)。

我在Ashwin Karpe的回答中找到了类似的话题,但未能使这个答案发挥作用并对其正确性产生怀疑。 http://camel.465427.n5.nabble.com/How-to-remove-interceptors-td4431339.html

UPD

我们在XML中进行单元或集成测试的Spring配置很少。 Camel配置也是XML格式。一些测试为端点设置了拦截器,这些端点设置了模拟或停止进一步拉伸或跳过原始端点等。 由于这个事实,我们被强制使用DirtiesContext注释来在每个添加拦截器的测试类/方法之后重新启动Spring和Camel上下文。 每次重启上下文需要30秒,并减慢所有测试版本。 计划是在具有相同XML配置的所有测试中使用相同的CamelContext,而无需重新加载上下文。 因此,我们需要了解如何在运行中修复Camel Context。

感谢您的帮助!

0 个答案:

没有答案