禁用基于某些条件将路由添加到camel上下文

时间:2017-07-07 02:23:41

标签: apache-camel jbossfuse fuseesb blueprint-osgi

我需要根据某些条件限制添加到camel上下文的特定路由。尝试过RoutePolicy.onStart - >但是在启动路线后会调用此方法。

我需要一种方法来完全避免生成/添加到camel上下文的路由。

 private List<String> eligibleRoutes;

 @Override
  public void onStart(Route route) {
    LOGGER.info("onInit for {}", route.getId());
    if (isCollectionNotEmpty(eligibleRoutes))
    {
      LOGGER.info("route-start eligibility for route {}", route.getId());
      if (eligibleRoutes.contains(route.getId()))
      {
        LOGGER.info("Route-start is set to ELIGiBLE for {}", route.getId());
      }else{
        LOGGER.info("Route-start is set to NOT ELIGiBLE for {}", route.getId());

        route.getRouteContext().getCamelContext().stopRoute(route.getId());
        boolean status = route.getRouteContext().getCamelContext().removeRoute(route.getId());
        return;
      }
}

1 个答案:

答案 0 :(得分:3)

您需要将路由设置为autoStartup = false,然后在onInit方法中确定是否应该启动它,并调用其startRoute方法。

或者另一种方法是将CamelContext配置为autoStartup=false,然后你可以拥有一个侦听CamelContextStartedEvent的Camel事件lister bean,然后触发那里找出你想要的路由开始,然后拨打camelContext.startRoute("nameOfRoute")