This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit 7313fc5ad8f0d3edd4f44967935de3aa4cfa506e Author: Claus Ibsen <[email protected]> AuthorDate: Mon Nov 22 15:37:12 2021 +0100 CAMEL-17223: camel-main - durationMaxAction to control whether to shutdown or stop all routes. --- .../src/main/java/org/apache/camel/spi/RouteController.java | 7 +++++++ .../java/org/apache/camel/impl/engine/AbstractCamelContext.java | 4 ++++ .../java/org/apache/camel/impl/engine/InternalRouteController.java | 5 +++++ .../org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java | 5 +++++ .../main/java/org/apache/camel/main/MainDurationEventNotifier.java | 7 +++++-- 5 files changed, 26 insertions(+), 2 deletions(-) diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/RouteController.java b/core/camel-api/src/main/java/org/apache/camel/spi/RouteController.java index b22812f..9af937b 100644 --- a/core/camel-api/src/main/java/org/apache/camel/spi/RouteController.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/RouteController.java @@ -77,6 +77,13 @@ public interface RouteController extends CamelContextAware, StaticService { void startAllRoutes() throws Exception; /** + * Stops all the routes + * + * @throws Exception is thrown if a route could not be stopped for whatever reason + */ + void stopAllRoutes() throws Exception; + + /** * Indicates whether current thread is starting route(s). * <p/> * This can be useful to know by {@link LifecycleStrategy} or the likes, in case they need to react differently. diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java index 5845fd9..db84220 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java @@ -1198,6 +1198,10 @@ public abstract class AbstractCamelContext extends BaseService internalRouteStartupManager.doStartOrResumeRoutes(routeServices, true, true, false, false); } + public void stopAllRoutes() throws Exception { + // TODO: implement me + } + public synchronized void startRoute(String routeId) throws Exception { DefaultRouteError.reset(this, routeId); diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/InternalRouteController.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/InternalRouteController.java index f7f7cc8..d2219f1 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/InternalRouteController.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/InternalRouteController.java @@ -73,6 +73,11 @@ class InternalRouteController implements RouteController { } @Override + public void stopAllRoutes() throws Exception { + abstractCamelContext.stopAllRoutes(); + } + + @Override public boolean isStartingRoutes() { return abstractCamelContext.isStartingRoutes(); } diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java index eb12bf4..d9f7f3b 100644 --- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java +++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java @@ -1994,6 +1994,11 @@ public class LightweightRuntimeCamelContext implements ExtendedCamelContext, Cat } @Override + public void stopAllRoutes() throws Exception { + throw new UnsupportedOperationException(); + } + + @Override public boolean isStartingRoutes() { return false; } diff --git a/core/camel-main/src/main/java/org/apache/camel/main/MainDurationEventNotifier.java b/core/camel-main/src/main/java/org/apache/camel/main/MainDurationEventNotifier.java index 586ad25..66a7432 100644 --- a/core/camel-main/src/main/java/org/apache/camel/main/MainDurationEventNotifier.java +++ b/core/camel-main/src/main/java/org/apache/camel/main/MainDurationEventNotifier.java @@ -160,8 +160,11 @@ public class MainDurationEventNotifier extends EventNotifierSupport { return; } - // TODO: stop all routes via shutdown strategy - LOG.warn("Stopping all routes!!!"); + try { + camelContext.getRouteController().stopAllRoutes(); + } catch (Exception e) { + LOG.warn("Error during stopping all routes. This exception is ignored.", e); + } } private void shutdownTask() {
