簡體   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