This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch feature/CAMEL-24003-cli-activity-connector
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 6fbc4f365791b78cc12692aaa9017c6b716de543
Author: Claus Ibsen <[email protected]>
AuthorDate: Sat Jul 11 10:43:21 2026 +0200

    CAMEL-24003: Wire activity data into CLI connector
    
    LocalCliConnector now writes {pid}-activity.json with completed
    exchange summaries from the BacklogTracer activity queue.
    ActivityDevConsole changed to use read-only getActivity() instead
    of dumpActivity() so the queue is not cleared on each poll.
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
    Signed-off-by: Claus Ibsen <[email protected]>
---
 .../apache/camel/impl/console/ActivityDevConsole.java |  2 +-
 .../apache/camel/cli/connector/LocalCliConnector.java | 19 +++++++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/ActivityDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/ActivityDevConsole.java
index 28fb5dbec054..6e9c211dc200 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/ActivityDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/ActivityDevConsole.java
@@ -62,7 +62,7 @@ public class ActivityDevConsole extends AbstractDevConsole {
 
             JsonArray arr = new JsonArray();
             root.put("activity", arr);
-            for (BacklogTracerEventMessage event : tracer.dumpActivity()) {
+            for (BacklogTracerEventMessage event : tracer.getActivity()) {
                 JsonObject jo = new JsonObject();
                 jo.put("uid", event.getUid());
                 jo.put("exchangeId", event.getExchangeId());
diff --git 
a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
 
b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
index b06303fceb46..4e8123d0d767 100644
--- 
a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
+++ 
b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
@@ -130,6 +130,7 @@ public class LocalCliConnector extends ServiceSupport 
implements CliConnector, C
     private File errorFile;
     private File receiveFile;
     private long receiveFilePos; // keep track of receive offset
+    private File activityFile;
     private byte[] lastSource;
     private ExpressionDefinition lastSourceExpression;
 
@@ -202,6 +203,7 @@ public class LocalCliConnector extends ServiceSupport 
implements CliConnector, C
             errorFile = createLockFile(lockFile.getName() + "-error.json");
             debugFile = createLockFile(lockFile.getName() + "-debug.json");
             receiveFile = createLockFile(lockFile.getName() + "-receive.json");
+            activityFile = createLockFile(lockFile.getName() + 
"-activity.json");
             scheduledFuture = executor.scheduleWithFixedDelay(this::task, 0, 
delay, TimeUnit.MILLISECONDS);
             LOG.info("Camel CLI connector enabled");
         } else {
@@ -1693,6 +1695,20 @@ public class LocalCliConnector extends ServiceSupport 
implements CliConnector, C
             LOG.trace("Error updating receive file: {} due to: {}. This 
exception is ignored.",
                     receiveFile, e.getMessage(), e);
         }
+        try {
+            DevConsole dc15 = 
camelContext.getCamelContextExtension().getContextPlugin(DevConsoleRegistry.class)
+                    .resolveById("activity");
+            if (dc15 != null) {
+                JsonObject json = (JsonObject) 
dc15.call(DevConsole.MediaType.JSON);
+                LOG.trace("Updating activity file: {}", activityFile);
+                String data = json.toJson() + System.lineSeparator();
+                IOHelper.writeText(data, activityFile);
+            }
+        } catch (Exception e) {
+            // ignore
+            LOG.trace("Error updating activity file: {} due to: {}. This 
exception is ignored.",
+                    activityFile, e.getMessage(), e);
+        }
     }
 
     private JsonObject collectMemory() {
@@ -1853,6 +1869,9 @@ public class LocalCliConnector extends ServiceSupport 
implements CliConnector, C
         if (receiveFile != null) {
             FileUtil.deleteFile(receiveFile);
         }
+        if (activityFile != null) {
+            FileUtil.deleteFile(activityFile);
+        }
         if (executor != null) {
             camelContext.getExecutorServiceManager().shutdown(executor);
             executor = null;

Reply via email to