[camel] branch master updated: CAMEL-15035: SupervisingRouteController - JMX management
This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git The following commit(s) were added to refs/heads/master by this push: new 34c028e CAMEL-15035: SupervisingRouteController - JMX management 34c028e is described below commit 34c028e1e514bffe246740e98eda321488c754a3 Author: Claus Ibsen AuthorDate: Mon May 11 10:52:20 2020 +0200 CAMEL-15035: SupervisingRouteController - JMX management --- .../src/main/java/org/apache/camel/Route.java | 6 ++ .../camel/spi/ManagementObjectNameStrategy.java| 2 +- .../apache/camel/spi/ManagementObjectStrategy.java | 2 +- .../camel/spi/SupervisingRouteController.java | 17 .../camel/impl/engine/DefaultRouteController.java | 12 ++- .../engine/DefaultSupervisingRouteController.java | 21 - .../main/MainSupervisingRouteControllerTest.java | 8 ++ .../api/management/mbean/CamelOpenMBeanTypes.java | 13 +++ .../mbean/ManagedRouteControllerMBean.java | 2 +- .../mbean/ManagedRuntimeEndpointRegistryMBean.java | 4 +- .../ManagedSupervisingRouteControllerMBean.java| 13 ++- .../DefaultManagementObjectNameStrategy.java | 11 ++- .../DefaultManagementObjectStrategy.java | 12 ++- .../management/JmxManagementLifecycleStrategy.java | 15 ++-- .../management/mbean/ManagedRouteController.java | 22 ++--- .../mbean/ManagedSupervisingRouteController.java | 95 ++ .../ManagedSupervisingRouteControllerTest.java | 14 ++-- .../apache/camel/util/backoff/BackOffTimer.java| 5 ++ .../camel/util/backoff/BackOffTimerTask.java | 13 +++ .../camel/util/backoff/BackOffTimerTest.java | 11 ++- 20 files changed, 257 insertions(+), 41 deletions(-) diff --git a/core/camel-api/src/main/java/org/apache/camel/Route.java b/core/camel-api/src/main/java/org/apache/camel/Route.java index 13586e6..ae4f818 100644 --- a/core/camel-api/src/main/java/org/apache/camel/Route.java +++ b/core/camel-api/src/main/java/org/apache/camel/Route.java @@ -180,8 +180,14 @@ public interface Route extends RuntimeConfiguration { */ void setLastError(RouteError error); +/** + * Gets the route startup order + */ Integer getStartupOrder(); +/** + * Sets the route startup order + */ void setStartupOrder(Integer startupOrder); /** diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectNameStrategy.java b/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectNameStrategy.java index 1656ff8..e6ccdd08 100644 --- a/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectNameStrategy.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectNameStrategy.java @@ -46,7 +46,7 @@ public interface ManagementObjectNameStrategy { ObjectName getObjectNameForCamelContext(CamelContext context) throws MalformedObjectNameException; -ObjectName getObjectNameForRouteController(CamelContext context) throws MalformedObjectNameException; +ObjectName getObjectNameForRouteController(CamelContext context, RouteController controller) throws MalformedObjectNameException; ObjectName getObjectNameForComponent(Component component, String name) throws MalformedObjectNameException; diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java b/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java index 9649519..b906d13 100644 --- a/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java @@ -48,7 +48,7 @@ public interface ManagementObjectStrategy { Object getManagedObjectForErrorHandler(CamelContext context, Route route, Processor errorHandler, ErrorHandlerFactory errorHandlerBuilder); -Object getManagedObjectForRouteController(CamelContext context); +Object getManagedObjectForRouteController(CamelContext context, RouteController routeController); Object getManagedObjectForRoute(CamelContext context, Route route); diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/SupervisingRouteController.java b/core/camel-api/src/main/java/org/apache/camel/spi/SupervisingRouteController.java index e0b6228..cb6e6e1 100644 --- a/core/camel-api/src/main/java/org/apache/camel/spi/SupervisingRouteController.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/SupervisingRouteController.java @@ -19,6 +19,7 @@ package org.apache.camel.spi; import java.util.Collection; import org.apache.camel.Route; +import org.apache.camel.util.backoff.BackOffTimer; /** * A supervising capable {@link RouteController} that delays the startup @@ -123,4 +124,20 @@ public interface SupervisingRouteController extends RouteController { */
[camel] branch master updated: CAMEL-15035: SupervisingRouteController - JMX management
This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git The following commit(s) were added to refs/heads/master by this push: new a2f6647 CAMEL-15035: SupervisingRouteController - JMX management a2f6647 is described below commit a2f664737775b8e627632a5e3456eb89cd59eafc Author: Claus Ibsen AuthorDate: Sun May 10 17:51:03 2020 +0200 CAMEL-15035: SupervisingRouteController - JMX management --- .../camel/spi/SupervisingRouteController.java | 12 ++ .../engine/DefaultSupervisingRouteController.java | 7 ++ .../ManagedSupervisingRouteControllerMBean.java| 59 + .../management/JmxManagementLifecycleStrategy.java | 4 + .../mbean/ManagedSupervisingRouteController.java | 93 ++ .../ManagedSupervisingRouteControllerTest.java | 137 + 6 files changed, 312 insertions(+) diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/SupervisingRouteController.java b/core/camel-api/src/main/java/org/apache/camel/spi/SupervisingRouteController.java index 0e16f68..e0b6228 100644 --- a/core/camel-api/src/main/java/org/apache/camel/spi/SupervisingRouteController.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/SupervisingRouteController.java @@ -16,6 +16,10 @@ */ package org.apache.camel.spi; +import java.util.Collection; + +import org.apache.camel.Route; + /** * A supervising capable {@link RouteController} that delays the startup * of the routes after the camel context startup and takes control of starting the routes in a safe manner. @@ -111,4 +115,12 @@ public interface SupervisingRouteController extends RouteController { */ void setBackOffMultiplier(double backOffMultiplier); +/** + * Return the list of routes that are currently under restarting by this controller. + * + * In other words the routes which has failed during startup and are know managed + * to be restarted. + */ +Collection getRestartingRoutes(); + } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultSupervisingRouteController.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultSupervisingRouteController.java index 3725145..9b7ce52 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultSupervisingRouteController.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultSupervisingRouteController.java @@ -318,6 +318,13 @@ public class DefaultSupervisingRouteController extends DefaultRouteController im .collect(Collectors.toList()); } +@Override +public Collection getRestartingRoutes() { +return routeManager.routes.keySet().stream() +.map(RouteHolder::get) +.collect(Collectors.toList()); +} + // * // Helpers // * diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSupervisingRouteControllerMBean.java b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSupervisingRouteControllerMBean.java new file mode 100644 index 000..a5ca7be --- /dev/null +++ b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSupervisingRouteControllerMBean.java @@ -0,0 +1,59 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.api.management.mbean; + +import org.apache.camel.api.management.ManagedAttribute; + +public interface ManagedSupervisingRouteControllerMBean extends ManagedServiceMBean { + +@ManagedAttribute(description = "Whether supervising is enabled") +boolean isEnabled(); + +@ManagedAttribute(description = "The number of threads used by the scheduled thread pool that are used for restarting routes") +int getThreadPoolSize(); + +@ManagedAttribute(description = "Initial delay in milli seconds before the route controller starts") +long getInitialDelay(); + +@ManagedAttribute(description = "Backoff delay in millis when restarting a route