camel-consul - 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/593dffec Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/593dffec Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/593dffec Branch: refs/heads/master Commit: 593dffecd7bad47739a7cbd319d14bb3e911038a Parents: 53f6494 Author: Claus Ibsen <davscl...@apache.org> Authored: Sun Feb 19 17:49:43 2017 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Sun Feb 19 17:49:43 2017 +0100 ---------------------------------------------------------------------- .../consul/policy/ConsulRoutePolicy.java | 38 ++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/593dffec/components/camel-consul/src/main/java/org/apache/camel/component/consul/policy/ConsulRoutePolicy.java ---------------------------------------------------------------------- diff --git a/components/camel-consul/src/main/java/org/apache/camel/component/consul/policy/ConsulRoutePolicy.java b/components/camel-consul/src/main/java/org/apache/camel/component/consul/policy/ConsulRoutePolicy.java index 8723992..f0d3083 100644 --- a/components/camel-consul/src/main/java/org/apache/camel/component/consul/policy/ConsulRoutePolicy.java +++ b/components/camel-consul/src/main/java/org/apache/camel/component/consul/policy/ConsulRoutePolicy.java @@ -34,14 +34,16 @@ import com.orbitz.consul.model.session.ImmutableSession; import com.orbitz.consul.option.QueryOptions; 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.support.RoutePolicySupport; import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class ConsulRoutePolicy extends RoutePolicySupport implements NonManagedService, CamelContextAware { +@ManagedResource(description = "Route policy using Consul as clustered lock") +public class ConsulRoutePolicy extends RoutePolicySupport implements CamelContextAware { private static final Logger LOGGER = LoggerFactory.getLogger(ConsulRoutePolicy.class); private final Object lock; @@ -52,6 +54,7 @@ public class ConsulRoutePolicy extends RoutePolicySupport implements NonManagedS private final Set<Route> suspendedRoutes; private final AtomicReference<BigInteger> index; + private Route route; private CamelContext camelContext; private String serviceName; private String servicePath; @@ -94,6 +97,12 @@ public class ConsulRoutePolicy extends RoutePolicySupport implements NonManagedS } @Override + public void onInit(Route route) { + super.onInit(route); + this.route = route; + } + + @Override public void onStart(Route route) { if (!leader.get() && shouldStopConsumer) { stopConsumer(route); @@ -213,10 +222,27 @@ public class ConsulRoutePolicy extends RoutePolicySupport implements NonManagedS // 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; + } + public Consul getConsul() { return consul; } + @ManagedAttribute(description = "The consul service name") public String getServiceName() { return serviceName; } @@ -226,6 +252,7 @@ public class ConsulRoutePolicy extends RoutePolicySupport implements NonManagedS this.servicePath = String.format("/service/%s/leader", serviceName); } + @ManagedAttribute(description = "The time to live") public int getTtl() { return ttl; } @@ -234,6 +261,7 @@ public class ConsulRoutePolicy extends RoutePolicySupport implements NonManagedS this.ttl = ttl > 10 ? ttl : 10; } + @ManagedAttribute(description = "The lock delay") public int getLockDelay() { return lockDelay; } @@ -242,6 +270,7 @@ public class ConsulRoutePolicy extends RoutePolicySupport implements NonManagedS this.lockDelay = lockDelay > 10 ? lockDelay : 10; } + @ManagedAttribute(description = "Whether to stop consumer when starting up and failed to become master") public boolean isShouldStopConsumer() { return shouldStopConsumer; } @@ -250,6 +279,11 @@ public class ConsulRoutePolicy extends RoutePolicySupport implements NonManagedS this.shouldStopConsumer = shouldStopConsumer; } + @ManagedAttribute(description = "Is this route the master or a slave") + public boolean isLeader() { + return leader.get(); + } + // ************************************************************************* // Watch // *************************************************************************