This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push: new 990f48577e3 CAMEL-20164: camel-jbang - Add camel get consumer command 990f48577e3 is described below commit 990f48577e34b14c87fc0033aec6987c1c7b6105 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Fri Dec 1 07:31:15 2023 +0100 CAMEL-20164: camel-jbang - Add camel get consumer command --- .../camel/impl/console/ConsumerDevConsole.java | 3 +++ .../jbang/core/commands/process/ListConsumer.java | 26 +++++++++++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsumerDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsumerDevConsole.java index 869d5e017d6..50db3511a6f 100644 --- a/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsumerDevConsole.java +++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsumerDevConsole.java @@ -148,7 +148,9 @@ public class ConsumerDevConsole extends AbstractDevConsole { jo.put("state", mc.getState()); jo.put("class", mc.getServiceType()); jo.put("inflight", inflight); + jo.put("scheduled", false); if (mcc instanceof ManagedSchedulePollConsumerMBean mpc) { + jo.put("scheduled", true); jo.put("polling", mpc.isPolling()); jo.put("firstPollDone", mpc.isFirstPollDone()); jo.put("schedulerStarted", mpc.isSchedulerStarted()); @@ -169,6 +171,7 @@ public class ConsumerDevConsole extends AbstractDevConsole { jo.put("backoffIdleThreshold", mpc.getBackoffIdleThreshold()); } if ("TimerConsumer".equals(mc.getServiceType())) { + jo.put("scheduled", true); // need to use JMX to gather details for camel-timer consumer try { MBeanServer ms = ManagementFactory.getPlatformMBeanServer(); diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListConsumer.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListConsumer.java index 422526f1dee..1c7ed264db8 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListConsumer.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListConsumer.java @@ -52,6 +52,10 @@ public class ListConsumer extends ProcessWatchCommand { description = "Filter consumers by URI") String filter; + @CommandLine.Option(names = { "--scheduled" }, + description = "Filter consumer to only show scheduled based consumers") + boolean scheduled; + @CommandLine.Option(names = { "--short-uri" }, description = "List endpoint URI without query parameters (short)") boolean shortUri; @@ -95,6 +99,7 @@ public class ListConsumer extends ProcessWatchCommand { row.uri = o.getString("uri"); row.state = o.getString("state"); row.className = o.getString("class"); + row.scheduled = o.getBoolean("scheduled"); row.inflight = o.getInteger("inflight"); row.polling = o.getBoolean("polling"); row.totalCounter = o.getLong("totalCounter"); @@ -115,6 +120,9 @@ public class ListConsumer extends ProcessWatchCommand { add = false; } } + if (scheduled && !row.scheduled) { + add = false; + } if (limit > 0 && rows.size() >= limit) { add = false; } @@ -142,10 +150,13 @@ public class ListConsumer extends ProcessWatchCommand { new Column().header("NAME").dataAlign(HorizontalAlign.LEFT).maxWidth(30, OverflowBehaviour.ELLIPSIS_RIGHT) .with(r -> r.name), new Column().header("AGE").headerAlign(HorizontalAlign.CENTER).with(r -> r.age), - new Column().header("ID").with(r -> r.id), - new Column().header("STATE").with(this::getState), + new Column().header("ID").dataAlign(HorizontalAlign.LEFT).maxWidth(20, OverflowBehaviour.ELLIPSIS_RIGHT) + .with(r -> r.id), + new Column().header("STATE").headerAlign(HorizontalAlign.CENTER).with(this::getState), + new Column().header("TYPE").dataAlign(HorizontalAlign.LEFT).maxWidth(20, OverflowBehaviour.ELLIPSIS_RIGHT) + .with(this::getType), new Column().header("INFLIGHT").with(r -> "" + r.inflight), - new Column().header("POLLS").with(this::getTotal), + new Column().header("POLL").with(this::getTotal), new Column().header("URI").visible(!wideUri).dataAlign(HorizontalAlign.LEFT) .maxWidth(90, OverflowBehaviour.ELLIPSIS_RIGHT) .with(this::getUri), @@ -172,6 +183,14 @@ public class ListConsumer extends ProcessWatchCommand { return r.state; } + private String getType(Row r) { + String s = r.className; + if (s.endsWith("Consumer")) { + s = s.substring(0, s.length() - 8); + } + return s; + } + private String getTotal(Row r) { if (r.totalCounter != null) { return String.valueOf(r.totalCounter); @@ -207,6 +226,7 @@ public class ListConsumer extends ProcessWatchCommand { String uri; String state; String className; + boolean scheduled; int inflight; Boolean polling; Long totalCounter;