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;
