Repository: camel Updated Branches: refs/heads/master 72025be03 -> 31a7e4598
CAMEL-10861: camel-hazelcast - route policy should have JMX api Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/31a7e459 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/31a7e459 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/31a7e459 Branch: refs/heads/master Commit: 31a7e45985a0a63fe3611b36d3e8364e78b7c440 Parents: 72025be Author: Claus Ibsen <davscl...@apache.org> Authored: Sun Feb 19 13:00:43 2017 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Sun Feb 19 13:00:43 2017 +0100 ---------------------------------------------------------------------- .../hazelcast/policy/HazelcastRoutePolicy.java | 36 ++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/31a7e459/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/policy/HazelcastRoutePolicy.java ---------------------------------------------------------------------- diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/policy/HazelcastRoutePolicy.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/policy/HazelcastRoutePolicy.java index 94d332f..d6250d2 100644 --- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/policy/HazelcastRoutePolicy.java +++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/policy/HazelcastRoutePolicy.java @@ -27,21 +27,24 @@ import com.hazelcast.core.HazelcastInstance; import com.hazelcast.core.IMap; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; -import org.apache.camel.NonManagedService; import org.apache.camel.Route; +import org.apache.camel.api.management.ManagedAttribute; +import org.apache.camel.api.management.ManagedResource; import org.apache.camel.component.hazelcast.HazelcastUtil; import org.apache.camel.support.RoutePolicySupport; import org.apache.camel.util.StringHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class HazelcastRoutePolicy extends RoutePolicySupport implements CamelContextAware, NonManagedService { +@ManagedResource(description = "Route policy using Hazelcast as clustered lock") +public class HazelcastRoutePolicy extends RoutePolicySupport implements CamelContextAware { private static final Logger LOGGER = LoggerFactory.getLogger(HazelcastRoutePolicy.class); private final boolean managedInstance; private final AtomicBoolean leader; private final Set<Route> suspendedRoutes; + private Route route; private CamelContext camelContext; private ExecutorService executorService; private HazelcastInstance instance; @@ -88,6 +91,12 @@ public class HazelcastRoutePolicy extends RoutePolicySupport implements CamelCon } @Override + public void onInit(Route route) { + super.onInit(route); + this.route = route; + } + + @Override public void onStart(Route route) { if (!leader.get() && shouldStopConsumer) { stopConsumer(route); @@ -196,6 +205,23 @@ public class HazelcastRoutePolicy extends RoutePolicySupport implements CamelCon // Getter/Setters // ************************************************************************* + @ManagedAttribute(description = "The route id") + public String getRouteId() { + if (route != null) { + return route.getId(); + } + return null; + } + + @ManagedAttribute(description = "The consumer endpoint", mask = true) + public String getEndpointUrl() { + if (route != null && route.getConsumer() != null && route.getConsumer().getEndpoint() != null) { + return route.getConsumer().getEndpoint().toString(); + } + return null; + } + + @ManagedAttribute(description = "The lock map name") public String getLockMapName() { return lockMapName; } @@ -204,6 +230,7 @@ public class HazelcastRoutePolicy extends RoutePolicySupport implements CamelCon this.lockMapName = lockMapName; } + @ManagedAttribute(description = "Whether to stop consumer when starting up and failed to become master") public boolean isShouldStopConsumer() { return shouldStopConsumer; } @@ -212,6 +239,7 @@ public class HazelcastRoutePolicy extends RoutePolicySupport implements CamelCon this.shouldStopConsumer = shouldStopConsumer; } + @ManagedAttribute(description = "The lock key") public String getLockKey() { return lockKey; } @@ -220,6 +248,7 @@ public class HazelcastRoutePolicy extends RoutePolicySupport implements CamelCon this.lockKey = lockKey; } + @ManagedAttribute(description = "The lock value") public String getLockValue() { return lockValue; } @@ -228,6 +257,7 @@ public class HazelcastRoutePolicy extends RoutePolicySupport implements CamelCon this.lockValue = lockValue; } + @ManagedAttribute(description = "Timeout used by slaves to try to obtain the lock to become new master") public long getTryLockTimeout() { return tryLockTimeout; } @@ -241,6 +271,7 @@ public class HazelcastRoutePolicy extends RoutePolicySupport implements CamelCon this.tryLockTimeoutUnit = tryLockTimeoutUnit; } + @ManagedAttribute(description = "Timeout unit") public TimeUnit getTryLockTimeoutUnit() { return tryLockTimeoutUnit; } @@ -249,6 +280,7 @@ public class HazelcastRoutePolicy extends RoutePolicySupport implements CamelCon this.tryLockTimeoutUnit = tryLockTimeoutUnit; } + @ManagedAttribute(description = "Is this route the master or a slave") public boolean isLeader() { return leader.get(); }