CAMEL-11583: SupervisingRouteController should honor if a route was explicit set to autoStartup=false
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/6893a37f Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/6893a37f Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/6893a37f Branch: refs/heads/master Commit: 6893a37f28c82dbc70a05b7cebc720fa40c641cf Parents: 0be3d90 Author: lburgazzoli <lburgazz...@gmail.com> Authored: Fri Aug 4 17:53:07 2017 +0200 Committer: lburgazzoli <lburgazz...@gmail.com> Committed: Tue Aug 8 13:29:27 2017 +0200 ---------------------------------------------------------------------- .../apache/camel/impl/DefaultCamelContext.java | 17 +++++++++++++++- .../camel/impl/DefaultRouteController.java | 5 +++++ .../camel/impl/SupervisingRouteController.java | 21 +++++++++++--------- .../org/apache/camel/spi/RouteController.java | 9 +++++++++ .../java/sample/camel/ApplicationRoutes.java | 5 +++++ 5 files changed, 47 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/6893a37f/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java index b46b6c2..1856ebd 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java +++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java @@ -3170,7 +3170,22 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon started++; } } - log.info("Total " + getRoutes().size() + " routes, of which " + started + " are started."); + + final List<Route> controlledRoutes = getRouteController().getControlledRoutes(); + + if (controlledRoutes.isEmpty()) { + log.info("Total {} routes, of which {} are started", + getRoutes().size(), + started); + } else { + log.info("Total {} routes, of which {} are started and {} are managed by the route controller ({})", + getRoutes().size(), + started, + controlledRoutes.size(), + getRouteController().getClass().getName() + ); + } + log.info("Apache Camel " + getVersion() + " (CamelContext: " + getName() + ") started in " + TimeUtils.printDuration(stopWatch.taken())); } EventHelper.notifyCamelContextStarted(this); http://git-wip-us.apache.org/repos/asf/camel/blob/6893a37f/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java index ff51cf3..db10a33 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java +++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteController.java @@ -17,6 +17,7 @@ package org.apache.camel.impl; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.concurrent.TimeUnit; @@ -104,4 +105,8 @@ public class DefaultRouteController extends org.apache.camel.support.ServiceSupp camelContext.resumeRoute(routeId); } + @Override + public List<Route> getControlledRoutes() { + return Collections.emptyList(); + } } http://git-wip-us.apache.org/repos/asf/camel/blob/6893a37f/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java b/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java index aaa6796..669532e 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java +++ b/camel-core/src/main/java/org/apache/camel/impl/SupervisingRouteController.java @@ -16,7 +16,6 @@ */ package org.apache.camel.impl; -import java.util.Collection; import java.util.EventObject; import java.util.HashMap; import java.util.List; @@ -252,6 +251,13 @@ public class SupervisingRouteController extends DefaultRouteController { } } + @Override + public List<Route> getControlledRoutes() { + return routes.stream() + .map(RouteHolder::get) + .collect(Collectors.toList()); + } + // ********************************* // Helpers // ********************************* @@ -432,14 +438,6 @@ public class SupervisingRouteController extends DefaultRouteController { routes.forEach((k, v) -> v.cancel(true)); routes.clear(); } - - boolean isSupervising(RouteHolder route) { - return routes.containsKey(route); - } - - Collection<RouteHolder> routes() { - return routes.keySet(); - } } // ********************************* @@ -533,6 +531,11 @@ public class SupervisingRouteController extends DefaultRouteController { private class ManagedRoutePolicy implements RoutePolicy { @Override public void onInit(Route route) { + if ("false".equals(route.getRouteContext().getRoute().getAutoStartup())) { + LOGGER.info("Route {} has explicit auto-startup flag set to false, ignore it", route.getId()); + return; + } + RouteHolder holder = new RouteHolder(route, routeCount.incrementAndGet()); if (routes.add(holder)) { holder.getContext().setRouteController(SupervisingRouteController.this); http://git-wip-us.apache.org/repos/asf/camel/blob/6893a37f/camel-core/src/main/java/org/apache/camel/spi/RouteController.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/spi/RouteController.java b/camel-core/src/main/java/org/apache/camel/spi/RouteController.java index 0f25a2d..0e55c52 100644 --- a/camel-core/src/main/java/org/apache/camel/spi/RouteController.java +++ b/camel-core/src/main/java/org/apache/camel/spi/RouteController.java @@ -16,10 +16,12 @@ */ package org.apache.camel.spi; +import java.util.List; import java.util.concurrent.TimeUnit; import org.apache.camel.CamelContextAware; import org.apache.camel.Experimental; +import org.apache.camel.Route; import org.apache.camel.Service; @Experimental @@ -38,4 +40,11 @@ public interface RouteController extends CamelContextAware, Service { void suspendRoute(String routeId, long timeout, TimeUnit timeUnit) throws Exception; void resumeRoute(String routeId) throws Exception; + + /** + * Return the list of routes controlled by this controller. + * + * @return the list of controlled routes; + */ + List<Route> getControlledRoutes(); } http://git-wip-us.apache.org/repos/asf/camel/blob/6893a37f/examples/camel-example-spring-boot-routecontroller/src/main/java/sample/camel/ApplicationRoutes.java ---------------------------------------------------------------------- diff --git a/examples/camel-example-spring-boot-routecontroller/src/main/java/sample/camel/ApplicationRoutes.java b/examples/camel-example-spring-boot-routecontroller/src/main/java/sample/camel/ApplicationRoutes.java index bd1473a..7115570 100644 --- a/examples/camel-example-spring-boot-routecontroller/src/main/java/sample/camel/ApplicationRoutes.java +++ b/examples/camel-example-spring-boot-routecontroller/src/main/java/sample/camel/ApplicationRoutes.java @@ -39,5 +39,10 @@ public class ApplicationRoutes extends RouteBuilder { from("undertow:http://localhost:9011") .id("undertow") .log("From undertow ..."); + + from("undertow:http://localhost:9012") + .id("undertow-2") + .autoStartup(false) + .log("From undertow ..."); } }