[英]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.