This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch uc in repository https://gitbox.apache.org/repos/asf/camel.git
commit 9836df163b7152f5b1ceca16b17b1ae99284f01e Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Sat Jun 22 12:46:46 2024 +0200 CAMEL-20879: camel-core: remote vs local endpoints counters --- .../camel/impl/console/ContextDevConsole.java | 4 ++ .../apache/camel/impl/console/RouteDevConsole.java | 2 + .../management/mbean/ManagedCamelContextMBean.java | 9 +++++ .../api/management/mbean/ManagedRouteMBean.java | 3 ++ .../management/mbean/ManagedCamelContext.java | 45 ++++++++++++++++++++++ .../camel/management/mbean/ManagedRoute.java | 8 ++++ 6 files changed, 71 insertions(+) diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java index a4bbdc3f395..c3a8e1aa398 100644 --- a/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java +++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java @@ -71,7 +71,9 @@ public class ContextDevConsole extends AbstractDevConsole { sb.append(String.format("\n Messages/Sec: %s", thp)); } sb.append(String.format("\n Total: %s", mb.getExchangesTotal())); + sb.append(String.format("\n Total (remote): %s", mb.getRemoteExchangesTotal())); sb.append(String.format("\n Failed: %s", mb.getExchangesFailed())); + sb.append(String.format("\n Failed (remote): %s", mb.getRemoteExchangesFailed())); sb.append(String.format("\n Inflight: %s", mb.getExchangesInflight())); long idle = mb.getIdleSince(); if (idle > 0) { @@ -151,6 +153,8 @@ public class ContextDevConsole extends AbstractDevConsole { stats.put("exchangesTotal", mb.getExchangesTotal()); stats.put("exchangesFailed", mb.getExchangesFailed()); stats.put("exchangesInflight", mb.getExchangesInflight()); + stats.put("remoteExchangesTotal", mb.getRemoteExchangesTotal()); + stats.put("remoteExchangesFailed", mb.getRemoteExchangesFailed()); stats.put("reloaded", reloaded); stats.put("meanProcessingTime", mb.getMeanProcessingTime()); stats.put("maxProcessingTime", mb.getMaxProcessingTime()); diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java index 27ad2f51fe4..59d022b5440 100644 --- a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java +++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java @@ -87,6 +87,7 @@ public class RouteDevConsole extends AbstractDevConsole { sb.append(String.format(" Node Prefix Id: %s", mrb.getNodePrefixId())); } sb.append(String.format("\n From: %s", mrb.getEndpointUri())); + sb.append(String.format("\n Remote: %s", mrb.isRemoteEndpoint())); if (mrb.getSourceLocation() != null) { sb.append(String.format("\n Source: %s", mrb.getSourceLocation())); } @@ -233,6 +234,7 @@ public class RouteDevConsole extends AbstractDevConsole { jo.put("nodePrefixId", mrb.getNodePrefixId()); } jo.put("from", mrb.getEndpointUri()); + jo.put("remote", mrb.isRemoteEndpoint()); if (mrb.getSourceLocation() != null) { jo.put("source", mrb.getSourceLocation()); } diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java index 2e94ff19b99..bae8cde3989 100644 --- a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java +++ b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedCamelContextMBean.java @@ -129,6 +129,15 @@ public interface ManagedCamelContextMBean extends ManagedPerformanceCounterMBean @ManagedAttribute(description = "Throughput message/second") String getThroughput(); + @ManagedAttribute(description = "Total number of exchanges processed from remote endpoints only") + long getRemoteExchangesTotal(); + + @ManagedAttribute(description = "Completed (success) number of exchanges processed from remote endpoints only") + long getRemoteExchangesCompleted(); + + @ManagedAttribute(description = "Failed number of exchanges processed from remote endpoints only") + long getRemoteExchangesFailed(); + @ManagedAttribute(description = "Whether breadcrumbs is in use") boolean isUseBreadcrumb(); diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java index e22e393b6a5..514230d8e83 100644 --- a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java +++ b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java @@ -178,4 +178,7 @@ public interface ManagedRouteMBean extends ManagedPerformanceCounterMBean { @ManagedAttribute(description = "Whether update route from XML is enabled") boolean isUpdateRouteEnabled(); + @ManagedAttribute(description = "Whether the consumer connects to remote or local systems") + boolean isRemoteEndpoint(); + } diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java index 78fb78127b5..b4c14c53346 100644 --- a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java +++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java @@ -64,6 +64,9 @@ public class ManagedCamelContext extends ManagedPerformanceCounter implements Ti private final String jmxDomain; private final boolean includeRouteTemplates; private final boolean includeKamelets; + private Statistic remoteExchangesTotal; + private Statistic remoteExchangesCompleted; + private Statistic remoteExchangesFailed; public ManagedCamelContext(CamelContext context) { this.context = context; @@ -75,11 +78,22 @@ public class ManagedCamelContext extends ManagedPerformanceCounter implements Ti @Override public void init(ManagementStrategy strategy) { super.init(strategy); + this.remoteExchangesTotal = new StatisticCounter(); + this.remoteExchangesCompleted = new StatisticCounter(); + this.remoteExchangesFailed = new StatisticCounter(); boolean enabled = context.getManagementStrategy().getManagementAgent() != null && context.getManagementStrategy().getManagementAgent().getStatisticsLevel() != ManagementStatisticsLevel.Off; setStatisticsEnabled(enabled); } + @Override + public void reset() { + super.reset(); + remoteExchangesTotal.reset(); + remoteExchangesCompleted.reset(); + remoteExchangesFailed.reset(); + } + @Override public void completedExchange(Exchange exchange, long time) { // the camel-context mbean is triggered for every route mbean @@ -91,9 +105,17 @@ public class ManagedCamelContext extends ManagedPerformanceCounter implements Ti int level = uow.routeStackLevel(includeRouteTemplates, includeKamelets); if (level <= 1) { super.completedExchange(exchange, time); + if (exchange.getFromEndpoint() != null && exchange.getFromEndpoint().isRemote()) { + remoteExchangesTotal.increment(); + remoteExchangesCompleted.increment(); + } } } else { super.completedExchange(exchange, time); + if (exchange.getFromEndpoint() != null && exchange.getFromEndpoint().isRemote()) { + remoteExchangesTotal.increment(); + remoteExchangesCompleted.increment(); + } } } @@ -108,9 +130,17 @@ public class ManagedCamelContext extends ManagedPerformanceCounter implements Ti int level = uow.routeStackLevel(includeRouteTemplates, includeKamelets); if (level <= 1) { super.failedExchange(exchange); + if (exchange.getFromEndpoint() != null && exchange.getFromEndpoint().isRemote()) { + remoteExchangesTotal.increment(); + remoteExchangesFailed.increment(); + } } } else { super.failedExchange(exchange); + if (exchange.getFromEndpoint() != null && exchange.getFromEndpoint().isRemote()) { + remoteExchangesTotal.increment(); + remoteExchangesFailed.increment(); + } } } @@ -330,6 +360,21 @@ public class ManagedCamelContext extends ManagedPerformanceCounter implements Ti } } + @Override + public long getRemoteExchangesTotal() { + return remoteExchangesTotal.getValue(); + } + + @Override + public long getRemoteExchangesCompleted() { + return remoteExchangesCompleted.getValue(); + } + + @Override + public long getRemoteExchangesFailed() { + return remoteExchangesFailed.getValue(); + } + @Override public boolean isUseBreadcrumb() { return context.isUseBreadcrumb(); diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java index 151ae524b0f..ecbed4766b1 100644 --- a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java +++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java @@ -733,6 +733,14 @@ public class ManagedRoute extends ManagedPerformanceCounter implements TimerList return enabled != null ? enabled : false; } + @Override + public boolean isRemoteEndpoint() { + if (route.getEndpoint() != null) { + return route.getEndpoint().isRemote(); + } + return false; + } + @Override public boolean equals(Object o) { return this == o || o != null && getClass() == o.getClass() && route.equals(((ManagedRoute) o).route);