You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2024/06/22 13:17:18 UTC
(camel) 02/08: CAMEL-20879: camel-core: remote vs local endpoints counters
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 <cl...@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);