we have developped application based on Karaf and Apache Camel. While our application is entirely based on bundles ( OSGI ) we are also loading the Camel context ( and its\'
Adding/Removing routes dynamically does not restart/reset camelContext.
Please find the sample.
public class DynamicAddRouteProcessor implements Processor {
@Override
public void process(Exchange paramExchange) throws Exception {
final String routeId = "DYNANMIC.ROUTE.1";
Route route = paramExchange.getContext().getRoute(routeId);
if (null == route) {
System.out.println("No route exist, creating one with name ");
paramExchange.getContext().addRoutes(new RouteBuilder() {
public void configure() throws Exception {
from("direct:DYNANMIC.ROUTE.1").routeId(routeId).to("direct:myloggerRoute");
}
});
} else {
System.out.println("Route already exist, no action"+ route.getId());
}
}
}
public class DynamicRemoveRouteProcessor implements Processor {
@Override
public void process(Exchange paramExchange) throws Exception {
final String routeId = "DYNANMIC.ROUTE.1";
Route route = paramExchange.getContext().getRoute(routeId);
if (null != route) {
System.out.println("Route already exist, deleting it!!!" + route.getId());
paramExchange.getContext().stopRoute(routeId);
paramExchange.getContext().removeRoute(routeId);
} else {
System.out.println("No sucn route exist, no action done "
+ routeId);
}
}
}
5000