[
https://issues.apache.org/jira/browse/CAMEL-24661?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18116293#comment-18116293
]
Claus Ibsen commented on CAMEL-24661:
-------------------------------------
Fixed by https://github.com/apache/camel/pull/26532 (execution limits and
Quarkus log file name) and https://github.com/apache/camel/pull/26542
(--console with the Spring Boot and Quarkus runtimes).
_Claude Code on behalf of davsclaus_
> camel-jbang: feature parity for camel run CLI flags across the Camel Main,
> Spring Boot and Quarkus runtimes (--console, max duration, log file)
> -----------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-24661
> URL: https://issues.apache.org/jira/browse/CAMEL-24661
> Project: Camel
> Issue Type: Improvement
> Components: camel-jbang
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Major
> Fix For: 4.23.0
>
>
> Follow-up to CAMEL-24659, which made {{camel run --runtime=main}} export and
> run in a separate JVM like Spring Boot and Quarkus, and added {{--console}}
> support for the exported Camel Main project. While doing that, a gap analysis
> of which {{camel run}} flags survive the export on each runtime was made.
> Most flags already have parity; the gaps are the developer console, the max
> duration options and the Quarkus log file name.
> h3. Where each camel run flag lands today
> ||Flag||Camel Main (after CAMEL-24659)||Spring Boot||Quarkus||
> |{{--port}}, {{--management-port}}|yes|yes ({{server.port}},
> {{management.server.port}})|yes ({{quarkus.http.port}},
> {{quarkus.management.port}})|
> |{{--observe}}|yes|yes, via {{camel-observability-services-starter}}|yes, via
> the extension|
> |{{--console}}|yes|no|no|
> |{{--dev}}|reload from source dir|devtools|{{quarkus:dev}}|
> |{{--jvm-args}}, {{--jfr}}, {{--jvm-debug}}|yes|jvm args and JFR yes|jvm args
> and JFR yes|
> |{{--max-seconds}}, {{--max-messages}},
> {{--max-idle-seconds}}|yes|ignored|ignored|
> |log file named after {{camel.main.name}}|yes|pid based (fine)|named after
> the export name (mismatch)|
> h3. What --console needs on each runtime
> *Spring Boot*: the console is an actuator endpoint with id {{camel}}
> ({{CamelDevConsoleEndpoint}}), gated by {{camel.main.devConsoleEnabled}} (the
> exporter only renames {{camel.main.*}} to {{camel.springboot.*}} for 4.4 and
> older, so the key works). It needs the {{camel-console-starter}} dependency
> and {{camel}} added to {{management.endpoints.web.exposure.include}}. The
> actuator starter is already in the exported pom template, and
> {{ExportSpringBoot}} already does exactly this for hawtio/jolokia, so it is a
> copy of that block. Default path is {{/actuator/camel}}. Jolokia parity is
> {{camel-jolokia-starter}} plus {{jolokia}} in the exposure list.
> *Quarkus*: the console is the {{camel-quarkus-console}} extension with
> {{quarkus.camel.console.enabled=true}} (or
> {{camel.main.dev-console-enabled=true}}). Default path is
> {{/q/camel/dev-console}}. Catch: it is only exposed in dev and test mode by
> default, and {{camel run --runtime=quarkus}} without {{--dev}} uses
> {{quarkus:run}} which is prod mode, so the export must also set
> {{quarkus.camel.console.exposure-mode=all}} (documented by Quarkus as
> unauthenticated). Health is {{/q/health}} via
> {{camel-quarkus-microprofile-health}} and Jolokia is {{/q/jolokia}} via
> {{camel-quarkus-jolokia}}.
> h3. Parity opportunity: the URL
> Tooling such as Kaoto hardcodes {{/q/dev}}. Both runtimes can be put on that
> path: Quarkus via {{quarkus.camel.console.path=dev}} (non-application
> endpoints live under {{/q/}}), and Spring Boot via
> {{management.endpoints.web.base-path=/q}} plus
> {{management.endpoints.web.path-mapping.camel=dev}}. That lets external tools
> work unchanged across all three runtimes.
> Trade-off: the observability-services starter injects {{/observe}} as the
> actuator base path and {{health,prometheus}} as the exposure list, at lowest
> precedence. Setting the exposure list for the console overrides those
> defaults, so the export must merge them ({{health,prometheus,camel}}) when
> {{--observe}} and {{--console}} are combined, and a base path of {{/q}} moves
> the probes away from {{/observe/*}} unless mapped individually. Camel Main
> already serves {{/q/dev}} and {{/observe/*}} side by side and is the
> reference behaviour.
> h3. Max duration options
> camel-spring-boot and camel-quarkus both honour
> {{camel.main.durationMaxSeconds}}, {{durationMaxMessages}} and
> {{durationMaxIdleSeconds}}, so they can be passed as system properties in the
> existing {{spring-boot.run.jvmArguments}} and {{jvm.args}} arguments, the
> same way the Camel Main run does after CAMEL-24659.
> h3. Proposal
> # {{--console}} for Spring Boot and Quarkus, implemented in
> {{ExportSpringBoot}} / {{ExportQuarkus}} from the {{camel.jbang.console}} run
> setting (like {{ExportCamelMain}}), mapped onto {{/q/dev}}, with the exposure
> list merge for {{--observe}} and the Quarkus exposure-mode note in the docs.
> Cover with {{ExportTest}} cases per runtime.
> # Forward the max duration options to the Spring Boot and Quarkus child JVMs.
> # Name the Quarkus run log file after {{camel.main.name}} like Camel Main
> does (likely why the TUI Log tab is empty for Quarkus apps).
> Risk is low; the only judgement call is exposing the Quarkus console in prod
> mode for a local run, which is acceptable for {{camel run}} as a developer
> tool, but the exported project should carry a comment saying so.
> ----
> _Created by Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v8.20.10#820010)