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);

Reply via email to