繁体   English   中英

Camel,Spring,OSGI:有没有一种方法可以指定stop方法?

[英]Camel, Spring, OSGI: Is there a way to specify the stop method?

我正在运行Camel Spring OSGI应用程序。 Camel上下文是通过Spring初始化的。 当捆绑包停止时,我需要进行一些清理活动,例如注销消息侦听器。 我怎么做? 有没有可以覆盖的方法? 我了解OSGI捆绑包必须提供激活器的启动和停止方法,但我的理解还在于Camel / Spring / OSGI框架会覆盖这些方法。

我的beanx.xml:

<beans>
  <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
    <routeBuilder ref="outboundBuilder" />
  </camelContext>
</beans>

我的Java代码:

public class MyRouteBuilder extends RouteBuilder {
    public void configure() {
           .....
    }
}

只是为了扩大对Bilgin Ibryam的回答,这是正确的。

骆驼可以将策略应用于路由。 此策略在运行时控制路由。 这将使您可以在路线生命周期的某些事件中执行自定义逻辑。

实施路由策略。

声明一个新类很简单,该类扩展了RoutePolicySupport然后覆盖了您感兴趣的方法。

public class MyRoutePolicy extends RoutePolicySupport{

    @Override
        public void onStart(Route route) {
        // TODO Auto-generated method stub
        super.onStart(route);
    } 

    @Override
    public void onStop(Route route) {
        // TODO Auto-generated method stub
        super.onStop(route);
    }

    @Override
    public void onExchangeBegin(Route route, Exchange exchange) {
        // TODO Auto-generated method stub
        super.onExchangeBegin(route, exchange);
    }


}

现在,在您的routebuilder configure()方法中使用该路由,如下所示:

 RoutePolicy policy = new MyRoutePolicy();
 from("timer://blah")
   .routeId("Test1").routePolicy(policy)
   .setBody().constant("A Message Like Hello World")
   .to("mock:meh");

如果您仅使用带有路径的Spring XML,请添加以下内容:

<bean id="policy" class="MyRoutePolicy"/>


<camelContext xmlns="http://camel.apache.org/schema/spring">
   <route id="foo" routePolicyRef="MyRoutePolicy">
     <from uri="timer://blah"/>
     <setBody><constant>A Message Like Hello World</constant></setBody>        
     <to uri="mock:meh"/>
   </route>
 </camelContext>

您可以使用骆驼路线策略,并在路线即将停止或从上下文中删除路线时编写代码以清理资源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM