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

davsclaus pushed a commit to branch ra
in repository https://gitbox.apache.org/repos/asf/camel.git

commit e8349f17eb5b949d42cc2eda54c75be42ba51ca2
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Thu May 23 18:49:21 2024 +0200

    CAMEL-20798: Add RemoteAddress to endpoints so they can tell the 
url/hostname etc for the system it connects. This is needed for better 
monitoring, tracing and management. Add this information into camel-tracer as 
tags.
---
 .../apache/camel/catalog/components/ironmq.json    |  62 +++----
 .../camel/component/activemq/ActiveMQEndpoint.java |  43 ++++-
 .../component/activemq6/ActiveMQEndpoint.java      |  43 ++++-
 .../component/ironmq/IronMQEndpointUriFactory.java |   4 +-
 .../org/apache/camel/component/ironmq/ironmq.json  |  62 +++----
 .../component/ironmq/IronMQConfiguration.java      |  13 +-
 .../camel/component/ironmq/IronMQEndpoint.java     |   8 +-
 .../apache/camel/component/jms/JmsComponent.java   |   2 +
 .../camel/component/kafka/KafkaEndpoint.java       |  17 +-
 .../apache/camel/component/nats/NatsEndpoint.java  |   8 +-
 .../apache/camel/component/paho/PahoEndpoint.java  |  23 ++-
 .../springrabbit/SpringRabbitMQEndpoint.java       |  29 +++-
 .../camel/component/sql/DefaultSqlEndpoint.java    |  23 ++-
 .../camel/component/stomp/StompEndpoint.java       |  16 +-
 .../org/apache/camel/tracing/TagConstants.java     |   4 +
 .../tracing/decorators/AbstractSpanDecorator.java  |  20 +++
 .../org/apache/camel/spi/RemoteAddressAware.java}  |  46 +++---
 .../camel/impl/console/EndpointDevConsole.java     |  11 ++
 .../api/management/mbean/ManagedEndpointMBean.java |   8 +
 .../camel/management/mbean/ManagedEndpoint.java    |  19 +++
 .../endpoint/dsl/IronMQEndpointBuilderFactory.java | 182 ++++++++++-----------
 .../jbang/core/commands/process/ListEndpoint.java  |  30 ++++
 .../apache/camel/kotlin/components/IronmqUriDsl.kt |  28 ++--
 23 files changed, 496 insertions(+), 205 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/ironmq.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/ironmq.json
index 01acaab1f8c..8697fd34348 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/ironmq.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/ironmq.json
@@ -37,36 +37,36 @@
   },
   "properties": {
     "queueName": { "index": 0, "kind": "path", "displayName": "Queue Name", 
"group": "common", "label": "", "required": true, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "The name of the IronMQ queue" },
-    "client": { "index": 1, "kind": "parameter", "displayName": "Client", 
"group": "common", "label": "", "required": false, "type": "object", 
"javaType": "io.iron.ironmq.Client", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "Reference to a io.iron.ironmq.Client in the 
Registry." },
-    "ironMQCloud": { "index": 2, "kind": "parameter", "displayName": "Iron 
MQCloud", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "https:\/\/mq-aws-us-east-1-1.iron.io", 
"configurationClass": "org.apache.camel.component.ironmq.IronMQConfiguration", 
"configurationField": "configuration", "description": "IronMq Cloud url. Urls 
for public clusters: https:\/\/mq-a [...]
-    "preserveHeaders": { "index": 3, "kind": "parameter", "displayName": 
"Preserve Headers", "group": "common", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "Should message headers be preserved when 
publishing messages. This will add the Camel heade [...]
-    "projectId": { "index": 4, "kind": "parameter", "displayName": "Project 
Id", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "IronMQ projectId" },
-    "token": { "index": 5, "kind": "parameter", "displayName": "Token", 
"group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "IronMQ token" },
-    "batchDelete": { "index": 6, "kind": "parameter", "displayName": "Batch 
Delete", "group": "consumer", "label": "consumer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "Should messages be deleted in one batch. This 
will limit the number of api requests since [...]
-    "concurrentConsumers": { "index": 7, "kind": "parameter", "displayName": 
"Concurrent Consumers", "group": "consumer", "label": "consumer", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": 1, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "The number of concurrent consumers." },
-    "maxMessagesPerPoll": { "index": 8, "kind": "parameter", "displayName": 
"Max Messages Per Poll", "group": "consumer", "label": "consumer", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": 1, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "Number of messages to poll pr. call. Maximum 
is 100." },
-    "sendEmptyMessageWhenIdle": { "index": 9, "kind": "parameter", 
"displayName": "Send Empty Message When Idle", "group": "consumer", "label": 
"consumer", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 
false, "description": "If the polling consumer did not poll any files, you can 
enable this option to send an empty message (no body) instead." },
-    "timeout": { "index": 10, "kind": "parameter", "displayName": "Timeout", 
"group": "consumer", "label": "consumer", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": 60, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "After timeout (in seconds), item will be 
placed back onto the queue." },
-    "wait": { "index": 11, "kind": "parameter", "displayName": "Wait", 
"group": "consumer", "label": "consumer", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "autowired": false, "secret": false, 
"configurationClass": "org.apache.camel.component.ironmq.IronMQConfiguration", 
"configurationField": "configuration", "description": "Time in seconds to wait 
for a message to become available. This enables long polling. Default is 0 
(does not wait), maximum is 30." },
-    "bridgeErrorHandler": { "index": 12, "kind": "parameter", "displayName": 
"Bridge Error Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions (if possible) occurred 
while the Camel consumer is trying to pickup incoming [...]
-    "exceptionHandler": { "index": 13, "kind": "parameter", "displayName": 
"Exception Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
let the consumer use a custom ExceptionHandler. Notice if the option 
bridgeErrorHandler is enabled then this option is not in use. By de [...]
-    "exchangePattern": { "index": 14, "kind": "parameter", "displayName": 
"Exchange Pattern", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
-    "pollStrategy": { "index": 15, "kind": "parameter", "displayName": "Poll 
Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, 
"autowired": false, "secret": false, "description": "A pluggable 
org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your 
custom implementation to control error handling usually occurred during the po 
[...]
-    "visibilityDelay": { "index": 16, "kind": "parameter", "displayName": 
"Visibility Delay", "group": "producer", "label": "producer", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "The item will not be available on the queue 
until this many seconds have passed. Default is 0 seconds." },
-    "lazyStartProducer": { "index": 17, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produ [...]
-    "backoffErrorThreshold": { "index": 18, "kind": "parameter", 
"displayName": "Backoff Error Threshold", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "integer", "javaType": "int", 
"deprecated": false, "autowired": false, "secret": false, "description": "The 
number of subsequent error polls (failed due some error) that should happen 
before the backoffMultipler should kick-in." },
-    "backoffIdleThreshold": { "index": 19, "kind": "parameter", "displayName": 
"Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "The number of subsequent 
idle polls that should happen before the backoffMultipler should kick-in." },
-    "backoffMultiplier": { "index": 20, "kind": "parameter", "displayName": 
"Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "To let the scheduled 
polling consumer backoff if there has been a number of subsequent idles\/errors 
in a row. The multiplier is then the number of polls that will be skipped 
before the next actual attempt is h [...]
-    "delay": { "index": 21, "kind": "parameter", "displayName": "Delay", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 500, "description": "Milliseconds before the 
next poll." },
-    "greedy": { "index": 22, "kind": "parameter", "displayName": "Greedy", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "If greedy is enabled, 
then the ScheduledPollConsumer will run immediately again, if the previous run 
polled 1 or more messages." },
-    "initialDelay": { "index": 23, "kind": "parameter", "displayName": 
"Initial Delay", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "long", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": 1000, "description": 
"Milliseconds before the first poll starts." },
-    "repeatCount": { "index": 24, "kind": "parameter", "displayName": "Repeat 
Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 0, "description": "Specifies a maximum limit 
of number of fires. So if you set it to 1, the scheduler will only fire once. 
If you set it to 5, it will only fire five times. A value of zero or negative 
means fire forever." },
-    "runLoggingLevel": { "index": 25, "kind": "parameter", "displayName": "Run 
Logging Level", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", 
"ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "TRACE", "description": "The consumer logs a start\/complete 
log line when it polls. This option allows you to configure the l [...]
-    "scheduledExecutorService": { "index": 26, "kind": "parameter", 
"displayName": "Scheduled Executor Service", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "object", "javaType": 
"java.util.concurrent.ScheduledExecutorService", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows for configuring a 
custom\/shared thread pool to use for the consumer. By default each consumer 
has its own single threaded thread pool." },
-    "scheduler": { "index": 27, "kind": "parameter", "displayName": 
"Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "none", "description": "To 
use a cron scheduler from either camel-spring or camel-quartz component. Use 
value spring or quartz for built in scheduler" },
-    "schedulerProperties": { "index": 28, "kind": "parameter", "displayName": 
"Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", 
"multiValue": true, "deprecated": false, "autowired": false, "secret": false, 
"description": "To configure additional properties when using a custom 
scheduler or any of the Quartz, Spring based scheduler." },
-    "startScheduler": { "index": 29, "kind": "parameter", "displayName": 
"Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether the scheduler should be auto started." },
-    "timeUnit": { "index": 30, "kind": "parameter", "displayName": "Time 
Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "object", "javaType": "java.util.concurrent.TimeUnit", "enum": [ 
"NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", 
"DAYS" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and 
delay options." },
-    "useFixedDelay": { "index": 31, "kind": "parameter", "displayName": "Use 
Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in 
JDK for details." }
+    "ironMQCloud": { "index": 1, "kind": "parameter", "displayName": "Iron 
MQCloud", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "https:\/\/mq-aws-us-east-1-1.iron.io", 
"configurationClass": "org.apache.camel.component.ironmq.IronMQConfiguration", 
"configurationField": "configuration", "description": "IronMq Cloud url. Urls 
for public clusters: https:\/\/mq-a [...]
+    "preserveHeaders": { "index": 2, "kind": "parameter", "displayName": 
"Preserve Headers", "group": "common", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "Should message headers be preserved when 
publishing messages. This will add the Camel heade [...]
+    "projectId": { "index": 3, "kind": "parameter", "displayName": "Project 
Id", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "IronMQ projectId" },
+    "batchDelete": { "index": 4, "kind": "parameter", "displayName": "Batch 
Delete", "group": "consumer", "label": "consumer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "Should messages be deleted in one batch. This 
will limit the number of api requests since [...]
+    "concurrentConsumers": { "index": 5, "kind": "parameter", "displayName": 
"Concurrent Consumers", "group": "consumer", "label": "consumer", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": 1, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "The number of concurrent consumers." },
+    "maxMessagesPerPoll": { "index": 6, "kind": "parameter", "displayName": 
"Max Messages Per Poll", "group": "consumer", "label": "consumer", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": 1, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "Number of messages to poll pr. call. Maximum 
is 100." },
+    "sendEmptyMessageWhenIdle": { "index": 7, "kind": "parameter", 
"displayName": "Send Empty Message When Idle", "group": "consumer", "label": 
"consumer", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 
false, "description": "If the polling consumer did not poll any files, you can 
enable this option to send an empty message (no body) instead." },
+    "timeout": { "index": 8, "kind": "parameter", "displayName": "Timeout", 
"group": "consumer", "label": "consumer", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": 60, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "After timeout (in seconds), item will be 
placed back onto the queue." },
+    "wait": { "index": 9, "kind": "parameter", "displayName": "Wait", "group": 
"consumer", "label": "consumer", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "autowired": false, "secret": false, 
"configurationClass": "org.apache.camel.component.ironmq.IronMQConfiguration", 
"configurationField": "configuration", "description": "Time in seconds to wait 
for a message to become available. This enables long polling. Default is 0 
(does not wait), maximum is 30." },
+    "bridgeErrorHandler": { "index": 10, "kind": "parameter", "displayName": 
"Bridge Error Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions (if possible) occurred 
while the Camel consumer is trying to pickup incoming [...]
+    "exceptionHandler": { "index": 11, "kind": "parameter", "displayName": 
"Exception Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
let the consumer use a custom ExceptionHandler. Notice if the option 
bridgeErrorHandler is enabled then this option is not in use. By de [...]
+    "exchangePattern": { "index": 12, "kind": "parameter", "displayName": 
"Exchange Pattern", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
+    "pollStrategy": { "index": 13, "kind": "parameter", "displayName": "Poll 
Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, 
"autowired": false, "secret": false, "description": "A pluggable 
org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your 
custom implementation to control error handling usually occurred during the po 
[...]
+    "visibilityDelay": { "index": 14, "kind": "parameter", "displayName": 
"Visibility Delay", "group": "producer", "label": "producer", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "The item will not be available on the queue 
until this many seconds have passed. Default is 0 seconds." },
+    "lazyStartProducer": { "index": 15, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produ [...]
+    "client": { "index": 16, "kind": "parameter", "displayName": "Client", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": "io.iron.ironmq.Client", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "Reference to a io.iron.ironmq.Client in the 
Registry." },
+    "backoffErrorThreshold": { "index": 17, "kind": "parameter", 
"displayName": "Backoff Error Threshold", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "integer", "javaType": "int", 
"deprecated": false, "autowired": false, "secret": false, "description": "The 
number of subsequent error polls (failed due some error) that should happen 
before the backoffMultipler should kick-in." },
+    "backoffIdleThreshold": { "index": 18, "kind": "parameter", "displayName": 
"Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "The number of subsequent 
idle polls that should happen before the backoffMultipler should kick-in." },
+    "backoffMultiplier": { "index": 19, "kind": "parameter", "displayName": 
"Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "To let the scheduled 
polling consumer backoff if there has been a number of subsequent idles\/errors 
in a row. The multiplier is then the number of polls that will be skipped 
before the next actual attempt is h [...]
+    "delay": { "index": 20, "kind": "parameter", "displayName": "Delay", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 500, "description": "Milliseconds before the 
next poll." },
+    "greedy": { "index": 21, "kind": "parameter", "displayName": "Greedy", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "If greedy is enabled, 
then the ScheduledPollConsumer will run immediately again, if the previous run 
polled 1 or more messages." },
+    "initialDelay": { "index": 22, "kind": "parameter", "displayName": 
"Initial Delay", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "long", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": 1000, "description": 
"Milliseconds before the first poll starts." },
+    "repeatCount": { "index": 23, "kind": "parameter", "displayName": "Repeat 
Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 0, "description": "Specifies a maximum limit 
of number of fires. So if you set it to 1, the scheduler will only fire once. 
If you set it to 5, it will only fire five times. A value of zero or negative 
means fire forever." },
+    "runLoggingLevel": { "index": 24, "kind": "parameter", "displayName": "Run 
Logging Level", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", 
"ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "TRACE", "description": "The consumer logs a start\/complete 
log line when it polls. This option allows you to configure the l [...]
+    "scheduledExecutorService": { "index": 25, "kind": "parameter", 
"displayName": "Scheduled Executor Service", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "object", "javaType": 
"java.util.concurrent.ScheduledExecutorService", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows for configuring a 
custom\/shared thread pool to use for the consumer. By default each consumer 
has its own single threaded thread pool." },
+    "scheduler": { "index": 26, "kind": "parameter", "displayName": 
"Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "none", "description": "To 
use a cron scheduler from either camel-spring or camel-quartz component. Use 
value spring or quartz for built in scheduler" },
+    "schedulerProperties": { "index": 27, "kind": "parameter", "displayName": 
"Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", 
"multiValue": true, "deprecated": false, "autowired": false, "secret": false, 
"description": "To configure additional properties when using a custom 
scheduler or any of the Quartz, Spring based scheduler." },
+    "startScheduler": { "index": 28, "kind": "parameter", "displayName": 
"Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether the scheduler should be auto started." },
+    "timeUnit": { "index": 29, "kind": "parameter", "displayName": "Time 
Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "object", "javaType": "java.util.concurrent.TimeUnit", "enum": [ 
"NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", 
"DAYS" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and 
delay options." },
+    "useFixedDelay": { "index": 30, "kind": "parameter", "displayName": "Use 
Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in 
JDK for details." },
+    "token": { "index": 31, "kind": "parameter", "displayName": "Token", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": true, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "IronMQ token" }
   }
 }
diff --git 
a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQEndpoint.java
 
b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQEndpoint.java
index bea3f0be8a7..caf63bf815f 100644
--- 
a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQEndpoint.java
+++ 
b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQEndpoint.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.activemq;
 
+import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.camel.Category;
@@ -23,6 +24,7 @@ import org.apache.camel.component.jms.JmsBinding;
 import org.apache.camel.component.jms.JmsComponent;
 import org.apache.camel.component.jms.JmsConfiguration;
 import org.apache.camel.component.jms.JmsEndpoint;
+import org.apache.camel.spi.RemoteAddressAware;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 
@@ -32,7 +34,7 @@ import org.apache.camel.spi.UriParam;
 @UriEndpoint(firstVersion = "1.0.0", extendsScheme = "jms", scheme = 
"activemq", title = "ActiveMQ 5.x",
              syntax = "activemq:destinationType:destinationName",
              category = { Category.MESSAGING })
-public class ActiveMQEndpoint extends JmsEndpoint {
+public class ActiveMQEndpoint extends JmsEndpoint implements 
RemoteAddressAware {
 
     @UriParam(multiValue = true, prefix = "destination.", label = 
"consumer,advanced")
     private Map<String, String> destinationOptions;
@@ -58,6 +60,45 @@ public class ActiveMQEndpoint extends JmsEndpoint {
         super(endpointUri, destinationName);
     }
 
+    @Override
+    public String getAddress() {
+        String url = null;
+        if (getConfiguration() instanceof ActiveMQConfiguration acc) {
+            url = acc.getBrokerURL();
+        }
+        if (url == null && getComponent() instanceof ActiveMQComponent amq) {
+            url = amq.getBrokerURL();
+        }
+        return url;
+    }
+
+    @Override
+    public Map<String, String> getAddressMetadata() {
+        String un = null;
+        String cid = null;
+        if (getConfiguration() instanceof ActiveMQConfiguration acc) {
+            un = acc.getUsername();
+            cid = acc.getClientId();
+        }
+        if (un == null) {
+            un = getComponent().getUsername();
+        }
+        if (cid == null) {
+            cid = getClientId();
+        }
+        if (un == null && cid == null) {
+            return null;
+        }
+        Map<String, String> map = new HashMap<>();
+        if (un != null) {
+            map.put("username", un);
+        }
+        if (cid != null) {
+            map.put("clientId", cid);
+        }
+        return map;
+    }
+
     public Map<String, String> getDestinationOptions() {
         return destinationOptions;
     }
diff --git 
a/components/camel-activemq6/src/main/java/org/apache/camel/component/activemq6/ActiveMQEndpoint.java
 
b/components/camel-activemq6/src/main/java/org/apache/camel/component/activemq6/ActiveMQEndpoint.java
index dc933e7946e..29bfce5ad32 100644
--- 
a/components/camel-activemq6/src/main/java/org/apache/camel/component/activemq6/ActiveMQEndpoint.java
+++ 
b/components/camel-activemq6/src/main/java/org/apache/camel/component/activemq6/ActiveMQEndpoint.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.activemq6;
 
+import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.camel.Category;
@@ -23,6 +24,7 @@ import org.apache.camel.component.jms.JmsBinding;
 import org.apache.camel.component.jms.JmsComponent;
 import org.apache.camel.component.jms.JmsConfiguration;
 import org.apache.camel.component.jms.JmsEndpoint;
+import org.apache.camel.spi.RemoteAddressAware;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 
@@ -32,7 +34,7 @@ import org.apache.camel.spi.UriParam;
 @UriEndpoint(firstVersion = "4.7.0", extendsScheme = "jms", scheme = 
"activemq6", title = "ActiveMQ 6.x",
              syntax = "activemq6:destinationType:destinationName",
              category = { Category.MESSAGING })
-public class ActiveMQEndpoint extends JmsEndpoint {
+public class ActiveMQEndpoint extends JmsEndpoint implements 
RemoteAddressAware {
 
     @UriParam(multiValue = true, prefix = "destination.", label = 
"consumer,advanced")
     private Map<String, String> destinationOptions;
@@ -58,6 +60,45 @@ public class ActiveMQEndpoint extends JmsEndpoint {
         super(endpointUri, destinationName);
     }
 
+    @Override
+    public String getAddress() {
+        String url = null;
+        if (getConfiguration() instanceof ActiveMQConfiguration acc) {
+            url = acc.getBrokerURL();
+        }
+        if (url == null && getComponent() instanceof ActiveMQComponent amq) {
+            url = amq.getBrokerURL();
+        }
+        return url;
+    }
+
+    @Override
+    public Map<String, String> getAddressMetadata() {
+        String un = null;
+        String cid = null;
+        if (getConfiguration() instanceof ActiveMQConfiguration acc) {
+            un = acc.getUsername();
+            cid = acc.getClientId();
+        }
+        if (un == null) {
+            un = getComponent().getUsername();
+        }
+        if (cid == null) {
+            cid = getClientId();
+        }
+        if (un == null && cid == null) {
+            return null;
+        }
+        Map<String, String> map = new HashMap<>();
+        if (un != null) {
+            map.put("username", un);
+        }
+        if (cid != null) {
+            map.put("clientId", cid);
+        }
+        return map;
+    }
+
     public Map<String, String> getDestinationOptions() {
         return destinationOptions;
     }
diff --git 
a/components/camel-ironmq/src/generated/java/org/apache/camel/component/ironmq/IronMQEndpointUriFactory.java
 
b/components/camel-ironmq/src/generated/java/org/apache/camel/component/ironmq/IronMQEndpointUriFactory.java
index c2bde0d34dc..37e3fa4a567 100644
--- 
a/components/camel-ironmq/src/generated/java/org/apache/camel/component/ironmq/IronMQEndpointUriFactory.java
+++ 
b/components/camel-ironmq/src/generated/java/org/apache/camel/component/ironmq/IronMQEndpointUriFactory.java
@@ -57,7 +57,9 @@ public class IronMQEndpointUriFactory extends 
org.apache.camel.support.component
         props.add("visibilityDelay");
         props.add("wait");
         PROPERTY_NAMES = Collections.unmodifiableSet(props);
-        SECRET_PROPERTY_NAMES = Collections.emptySet();
+        Set<String> secretProps = new HashSet<>(1);
+        secretProps.add("token");
+        SECRET_PROPERTY_NAMES = Collections.unmodifiableSet(secretProps);
         Set<String> prefixes = new HashSet<>(1);
         prefixes.add("scheduler.");
         MULTI_VALUE_PREFIXES = Collections.unmodifiableSet(prefixes);
diff --git 
a/components/camel-ironmq/src/generated/resources/META-INF/org/apache/camel/component/ironmq/ironmq.json
 
b/components/camel-ironmq/src/generated/resources/META-INF/org/apache/camel/component/ironmq/ironmq.json
index 01acaab1f8c..8697fd34348 100644
--- 
a/components/camel-ironmq/src/generated/resources/META-INF/org/apache/camel/component/ironmq/ironmq.json
+++ 
b/components/camel-ironmq/src/generated/resources/META-INF/org/apache/camel/component/ironmq/ironmq.json
@@ -37,36 +37,36 @@
   },
   "properties": {
     "queueName": { "index": 0, "kind": "path", "displayName": "Queue Name", 
"group": "common", "label": "", "required": true, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "The name of the IronMQ queue" },
-    "client": { "index": 1, "kind": "parameter", "displayName": "Client", 
"group": "common", "label": "", "required": false, "type": "object", 
"javaType": "io.iron.ironmq.Client", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "Reference to a io.iron.ironmq.Client in the 
Registry." },
-    "ironMQCloud": { "index": 2, "kind": "parameter", "displayName": "Iron 
MQCloud", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "https:\/\/mq-aws-us-east-1-1.iron.io", 
"configurationClass": "org.apache.camel.component.ironmq.IronMQConfiguration", 
"configurationField": "configuration", "description": "IronMq Cloud url. Urls 
for public clusters: https:\/\/mq-a [...]
-    "preserveHeaders": { "index": 3, "kind": "parameter", "displayName": 
"Preserve Headers", "group": "common", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "Should message headers be preserved when 
publishing messages. This will add the Camel heade [...]
-    "projectId": { "index": 4, "kind": "parameter", "displayName": "Project 
Id", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "IronMQ projectId" },
-    "token": { "index": 5, "kind": "parameter", "displayName": "Token", 
"group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "IronMQ token" },
-    "batchDelete": { "index": 6, "kind": "parameter", "displayName": "Batch 
Delete", "group": "consumer", "label": "consumer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "Should messages be deleted in one batch. This 
will limit the number of api requests since [...]
-    "concurrentConsumers": { "index": 7, "kind": "parameter", "displayName": 
"Concurrent Consumers", "group": "consumer", "label": "consumer", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": 1, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "The number of concurrent consumers." },
-    "maxMessagesPerPoll": { "index": 8, "kind": "parameter", "displayName": 
"Max Messages Per Poll", "group": "consumer", "label": "consumer", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": 1, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "Number of messages to poll pr. call. Maximum 
is 100." },
-    "sendEmptyMessageWhenIdle": { "index": 9, "kind": "parameter", 
"displayName": "Send Empty Message When Idle", "group": "consumer", "label": 
"consumer", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 
false, "description": "If the polling consumer did not poll any files, you can 
enable this option to send an empty message (no body) instead." },
-    "timeout": { "index": 10, "kind": "parameter", "displayName": "Timeout", 
"group": "consumer", "label": "consumer", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": 60, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "After timeout (in seconds), item will be 
placed back onto the queue." },
-    "wait": { "index": 11, "kind": "parameter", "displayName": "Wait", 
"group": "consumer", "label": "consumer", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "autowired": false, "secret": false, 
"configurationClass": "org.apache.camel.component.ironmq.IronMQConfiguration", 
"configurationField": "configuration", "description": "Time in seconds to wait 
for a message to become available. This enables long polling. Default is 0 
(does not wait), maximum is 30." },
-    "bridgeErrorHandler": { "index": 12, "kind": "parameter", "displayName": 
"Bridge Error Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions (if possible) occurred 
while the Camel consumer is trying to pickup incoming [...]
-    "exceptionHandler": { "index": 13, "kind": "parameter", "displayName": 
"Exception Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
let the consumer use a custom ExceptionHandler. Notice if the option 
bridgeErrorHandler is enabled then this option is not in use. By de [...]
-    "exchangePattern": { "index": 14, "kind": "parameter", "displayName": 
"Exchange Pattern", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
-    "pollStrategy": { "index": 15, "kind": "parameter", "displayName": "Poll 
Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, 
"autowired": false, "secret": false, "description": "A pluggable 
org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your 
custom implementation to control error handling usually occurred during the po 
[...]
-    "visibilityDelay": { "index": 16, "kind": "parameter", "displayName": 
"Visibility Delay", "group": "producer", "label": "producer", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "The item will not be available on the queue 
until this many seconds have passed. Default is 0 seconds." },
-    "lazyStartProducer": { "index": 17, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produ [...]
-    "backoffErrorThreshold": { "index": 18, "kind": "parameter", 
"displayName": "Backoff Error Threshold", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "integer", "javaType": "int", 
"deprecated": false, "autowired": false, "secret": false, "description": "The 
number of subsequent error polls (failed due some error) that should happen 
before the backoffMultipler should kick-in." },
-    "backoffIdleThreshold": { "index": 19, "kind": "parameter", "displayName": 
"Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "The number of subsequent 
idle polls that should happen before the backoffMultipler should kick-in." },
-    "backoffMultiplier": { "index": 20, "kind": "parameter", "displayName": 
"Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "To let the scheduled 
polling consumer backoff if there has been a number of subsequent idles\/errors 
in a row. The multiplier is then the number of polls that will be skipped 
before the next actual attempt is h [...]
-    "delay": { "index": 21, "kind": "parameter", "displayName": "Delay", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 500, "description": "Milliseconds before the 
next poll." },
-    "greedy": { "index": 22, "kind": "parameter", "displayName": "Greedy", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "If greedy is enabled, 
then the ScheduledPollConsumer will run immediately again, if the previous run 
polled 1 or more messages." },
-    "initialDelay": { "index": 23, "kind": "parameter", "displayName": 
"Initial Delay", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "long", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": 1000, "description": 
"Milliseconds before the first poll starts." },
-    "repeatCount": { "index": 24, "kind": "parameter", "displayName": "Repeat 
Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 0, "description": "Specifies a maximum limit 
of number of fires. So if you set it to 1, the scheduler will only fire once. 
If you set it to 5, it will only fire five times. A value of zero or negative 
means fire forever." },
-    "runLoggingLevel": { "index": 25, "kind": "parameter", "displayName": "Run 
Logging Level", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", 
"ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "TRACE", "description": "The consumer logs a start\/complete 
log line when it polls. This option allows you to configure the l [...]
-    "scheduledExecutorService": { "index": 26, "kind": "parameter", 
"displayName": "Scheduled Executor Service", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "object", "javaType": 
"java.util.concurrent.ScheduledExecutorService", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows for configuring a 
custom\/shared thread pool to use for the consumer. By default each consumer 
has its own single threaded thread pool." },
-    "scheduler": { "index": 27, "kind": "parameter", "displayName": 
"Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "none", "description": "To 
use a cron scheduler from either camel-spring or camel-quartz component. Use 
value spring or quartz for built in scheduler" },
-    "schedulerProperties": { "index": 28, "kind": "parameter", "displayName": 
"Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", 
"multiValue": true, "deprecated": false, "autowired": false, "secret": false, 
"description": "To configure additional properties when using a custom 
scheduler or any of the Quartz, Spring based scheduler." },
-    "startScheduler": { "index": 29, "kind": "parameter", "displayName": 
"Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether the scheduler should be auto started." },
-    "timeUnit": { "index": 30, "kind": "parameter", "displayName": "Time 
Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "object", "javaType": "java.util.concurrent.TimeUnit", "enum": [ 
"NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", 
"DAYS" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and 
delay options." },
-    "useFixedDelay": { "index": 31, "kind": "parameter", "displayName": "Use 
Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in 
JDK for details." }
+    "ironMQCloud": { "index": 1, "kind": "parameter", "displayName": "Iron 
MQCloud", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "https:\/\/mq-aws-us-east-1-1.iron.io", 
"configurationClass": "org.apache.camel.component.ironmq.IronMQConfiguration", 
"configurationField": "configuration", "description": "IronMq Cloud url. Urls 
for public clusters: https:\/\/mq-a [...]
+    "preserveHeaders": { "index": 2, "kind": "parameter", "displayName": 
"Preserve Headers", "group": "common", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "Should message headers be preserved when 
publishing messages. This will add the Camel heade [...]
+    "projectId": { "index": 3, "kind": "parameter", "displayName": "Project 
Id", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "IronMQ projectId" },
+    "batchDelete": { "index": 4, "kind": "parameter", "displayName": "Batch 
Delete", "group": "consumer", "label": "consumer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "Should messages be deleted in one batch. This 
will limit the number of api requests since [...]
+    "concurrentConsumers": { "index": 5, "kind": "parameter", "displayName": 
"Concurrent Consumers", "group": "consumer", "label": "consumer", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": 1, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "The number of concurrent consumers." },
+    "maxMessagesPerPoll": { "index": 6, "kind": "parameter", "displayName": 
"Max Messages Per Poll", "group": "consumer", "label": "consumer", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": 1, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "Number of messages to poll pr. call. Maximum 
is 100." },
+    "sendEmptyMessageWhenIdle": { "index": 7, "kind": "parameter", 
"displayName": "Send Empty Message When Idle", "group": "consumer", "label": 
"consumer", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 
false, "description": "If the polling consumer did not poll any files, you can 
enable this option to send an empty message (no body) instead." },
+    "timeout": { "index": 8, "kind": "parameter", "displayName": "Timeout", 
"group": "consumer", "label": "consumer", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": 60, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "After timeout (in seconds), item will be 
placed back onto the queue." },
+    "wait": { "index": 9, "kind": "parameter", "displayName": "Wait", "group": 
"consumer", "label": "consumer", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "autowired": false, "secret": false, 
"configurationClass": "org.apache.camel.component.ironmq.IronMQConfiguration", 
"configurationField": "configuration", "description": "Time in seconds to wait 
for a message to become available. This enables long polling. Default is 0 
(does not wait), maximum is 30." },
+    "bridgeErrorHandler": { "index": 10, "kind": "parameter", "displayName": 
"Bridge Error Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions (if possible) occurred 
while the Camel consumer is trying to pickup incoming [...]
+    "exceptionHandler": { "index": 11, "kind": "parameter", "displayName": 
"Exception Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
let the consumer use a custom ExceptionHandler. Notice if the option 
bridgeErrorHandler is enabled then this option is not in use. By de [...]
+    "exchangePattern": { "index": 12, "kind": "parameter", "displayName": 
"Exchange Pattern", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
+    "pollStrategy": { "index": 13, "kind": "parameter", "displayName": "Poll 
Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, 
"autowired": false, "secret": false, "description": "A pluggable 
org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your 
custom implementation to control error handling usually occurred during the po 
[...]
+    "visibilityDelay": { "index": 14, "kind": "parameter", "displayName": 
"Visibility Delay", "group": "producer", "label": "producer", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "The item will not be available on the queue 
until this many seconds have passed. Default is 0 seconds." },
+    "lazyStartProducer": { "index": 15, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produ [...]
+    "client": { "index": 16, "kind": "parameter", "displayName": "Client", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": "io.iron.ironmq.Client", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "Reference to a io.iron.ironmq.Client in the 
Registry." },
+    "backoffErrorThreshold": { "index": 17, "kind": "parameter", 
"displayName": "Backoff Error Threshold", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "integer", "javaType": "int", 
"deprecated": false, "autowired": false, "secret": false, "description": "The 
number of subsequent error polls (failed due some error) that should happen 
before the backoffMultipler should kick-in." },
+    "backoffIdleThreshold": { "index": 18, "kind": "parameter", "displayName": 
"Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "The number of subsequent 
idle polls that should happen before the backoffMultipler should kick-in." },
+    "backoffMultiplier": { "index": 19, "kind": "parameter", "displayName": 
"Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "To let the scheduled 
polling consumer backoff if there has been a number of subsequent idles\/errors 
in a row. The multiplier is then the number of polls that will be skipped 
before the next actual attempt is h [...]
+    "delay": { "index": 20, "kind": "parameter", "displayName": "Delay", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 500, "description": "Milliseconds before the 
next poll." },
+    "greedy": { "index": 21, "kind": "parameter", "displayName": "Greedy", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "If greedy is enabled, 
then the ScheduledPollConsumer will run immediately again, if the previous run 
polled 1 or more messages." },
+    "initialDelay": { "index": 22, "kind": "parameter", "displayName": 
"Initial Delay", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "long", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": 1000, "description": 
"Milliseconds before the first poll starts." },
+    "repeatCount": { "index": 23, "kind": "parameter", "displayName": "Repeat 
Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 0, "description": "Specifies a maximum limit 
of number of fires. So if you set it to 1, the scheduler will only fire once. 
If you set it to 5, it will only fire five times. A value of zero or negative 
means fire forever." },
+    "runLoggingLevel": { "index": 24, "kind": "parameter", "displayName": "Run 
Logging Level", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", 
"ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "TRACE", "description": "The consumer logs a start\/complete 
log line when it polls. This option allows you to configure the l [...]
+    "scheduledExecutorService": { "index": 25, "kind": "parameter", 
"displayName": "Scheduled Executor Service", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "object", "javaType": 
"java.util.concurrent.ScheduledExecutorService", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows for configuring a 
custom\/shared thread pool to use for the consumer. By default each consumer 
has its own single threaded thread pool." },
+    "scheduler": { "index": 26, "kind": "parameter", "displayName": 
"Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "none", "description": "To 
use a cron scheduler from either camel-spring or camel-quartz component. Use 
value spring or quartz for built in scheduler" },
+    "schedulerProperties": { "index": 27, "kind": "parameter", "displayName": 
"Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", 
"multiValue": true, "deprecated": false, "autowired": false, "secret": false, 
"description": "To configure additional properties when using a custom 
scheduler or any of the Quartz, Spring based scheduler." },
+    "startScheduler": { "index": 28, "kind": "parameter", "displayName": 
"Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether the scheduler should be auto started." },
+    "timeUnit": { "index": 29, "kind": "parameter", "displayName": "Time 
Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "object", "javaType": "java.util.concurrent.TimeUnit", "enum": [ 
"NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", 
"DAYS" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and 
delay options." },
+    "useFixedDelay": { "index": 30, "kind": "parameter", "displayName": "Use 
Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in 
JDK for details." },
+    "token": { "index": 31, "kind": "parameter", "displayName": "Token", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": true, "configurationClass": 
"org.apache.camel.component.ironmq.IronMQConfiguration", "configurationField": 
"configuration", "description": "IronMQ token" }
   }
 }
diff --git 
a/components/camel-ironmq/src/main/java/org/apache/camel/component/ironmq/IronMQConfiguration.java
 
b/components/camel-ironmq/src/main/java/org/apache/camel/component/ironmq/IronMQConfiguration.java
index 9117a2802d0..003f3f90a40 100644
--- 
a/components/camel-ironmq/src/main/java/org/apache/camel/component/ironmq/IronMQConfiguration.java
+++ 
b/components/camel-ironmq/src/main/java/org/apache/camel/component/ironmq/IronMQConfiguration.java
@@ -26,23 +26,24 @@ import org.apache.camel.spi.UriPath;
 public class IronMQConfiguration {
     // common properties
 
+    @UriPath
+    @Metadata(required = true)
+    private String queueName;
+
     @UriParam
     private String projectId;
 
-    @UriParam
+    @UriParam(label = "security")
+    @Metadata(secret = true)
     private String token;
 
-    @UriPath
-    @Metadata(required = true)
-    private String queueName;
-
     @UriParam(defaultValue = "https://mq-aws-us-east-1-1.iron.io";)
     private String ironMQCloud = "https://mq-aws-us-east-1-1.iron.io";;
 
     @UriParam
     private boolean preserveHeaders;
 
-    @UriParam
+    @UriParam(label = "advanced")
     private Client client;
 
     // producer properties
diff --git 
a/components/camel-ironmq/src/main/java/org/apache/camel/component/ironmq/IronMQEndpoint.java
 
b/components/camel-ironmq/src/main/java/org/apache/camel/component/ironmq/IronMQEndpoint.java
index af4367b0b8c..c9897e968eb 100644
--- 
a/components/camel-ironmq/src/main/java/org/apache/camel/component/ironmq/IronMQEndpoint.java
+++ 
b/components/camel-ironmq/src/main/java/org/apache/camel/component/ironmq/IronMQEndpoint.java
@@ -24,6 +24,7 @@ import org.apache.camel.Category;
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.spi.RemoteAddressAware;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.support.ScheduledPollEndpoint;
@@ -36,7 +37,7 @@ import org.slf4j.LoggerFactory;
  */
 @UriEndpoint(firstVersion = "2.17.0", scheme = "ironmq", syntax = 
"ironmq:queueName", title = "IronMQ",
              category = { Category.CLOUD, Category.MESSAGING }, headersClass = 
IronMQConstants.class)
-public class IronMQEndpoint extends ScheduledPollEndpoint {
+public class IronMQEndpoint extends ScheduledPollEndpoint implements 
RemoteAddressAware {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(IronMQEndpoint.class);
 
@@ -75,6 +76,11 @@ public class IronMQEndpoint extends ScheduledPollEndpoint {
         super.doStop();
     }
 
+    @Override
+    public String getAddress() {
+        return configuration.getIronMQCloud();
+    }
+
     public Client getClient() {
         if (client == null) {
             client = createClient();
diff --git 
a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
 
b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
index 74e739ae9d4..2ed9c40a8ad 100644
--- 
a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
+++ 
b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
@@ -1207,6 +1207,8 @@ public class JmsComponent extends 
HeaderFilterStrategyComponent {
             ucfa.setPassword(cfPassword);
             ucfa.setUsername(cfUsername);
             endpoint.getConfiguration().setConnectionFactory(ucfa);
+            endpoint.getConfiguration().setUsername(cfUsername);
+            endpoint.getConfiguration().setPassword(cfPassword);
         } else {
             // if only username or password was provided then fail
             if (cfUsername != null || cfPassword != null) {
diff --git 
a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaEndpoint.java
 
b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaEndpoint.java
index e28309b55d2..1bfbc129b9a 100644
--- 
a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaEndpoint.java
+++ 
b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaEndpoint.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.kafka;
 
+import java.util.Map;
 import java.util.Properties;
 import java.util.concurrent.ExecutorService;
 
@@ -27,6 +28,7 @@ import org.apache.camel.Producer;
 import org.apache.camel.component.kafka.consumer.KafkaManualCommit;
 import org.apache.camel.component.kafka.consumer.KafkaManualCommitFactory;
 import org.apache.camel.spi.ClassResolver;
+import org.apache.camel.spi.RemoteAddressAware;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.support.DefaultEndpoint;
@@ -46,7 +48,7 @@ import org.slf4j.LoggerFactory;
  */
 @UriEndpoint(firstVersion = "2.13.0", scheme = "kafka", title = "Kafka", 
syntax = "kafka:topic",
              category = { Category.MESSAGING }, headersClass = 
KafkaConstants.class)
-public class KafkaEndpoint extends DefaultEndpoint implements 
MultipleConsumersSupport {
+public class KafkaEndpoint extends DefaultEndpoint implements 
MultipleConsumersSupport, RemoteAddressAware {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(KafkaEndpoint.class);
 
@@ -71,6 +73,19 @@ public class KafkaEndpoint extends DefaultEndpoint 
implements MultipleConsumersS
         return (KafkaComponent) super.getComponent();
     }
 
+    @Override
+    public String getAddress() {
+        return configuration.getBrokers();
+    }
+
+    @Override
+    public Map<String, String> getAddressMetadata() {
+        if (configuration.getClientId() != null) {
+            return Map.of("clientId", configuration.getClientId());
+        }
+        return null;
+    }
+
     public KafkaConfiguration getConfiguration() {
         return configuration;
     }
diff --git 
a/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsEndpoint.java
 
b/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsEndpoint.java
index 2edaa653b4d..1ab1735a1f4 100644
--- 
a/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsEndpoint.java
+++ 
b/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsEndpoint.java
@@ -33,6 +33,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.spi.HeaderFilterStrategyAware;
+import org.apache.camel.spi.RemoteAddressAware;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.support.DefaultEndpoint;
@@ -44,7 +45,7 @@ import org.apache.camel.util.ObjectHelper;
  */
 @UriEndpoint(firstVersion = "2.17.0", scheme = "nats", title = "Nats", syntax 
= "nats:topic", category = { Category.MESSAGING },
              headersClass = NatsConstants.class)
-public class NatsEndpoint extends DefaultEndpoint implements 
MultipleConsumersSupport, HeaderFilterStrategyAware {
+public class NatsEndpoint extends DefaultEndpoint implements 
MultipleConsumersSupport, HeaderFilterStrategyAware, RemoteAddressAware {
 
     @UriParam
     private NatsConfiguration configuration;
@@ -71,6 +72,11 @@ public class NatsEndpoint extends DefaultEndpoint implements 
MultipleConsumersSu
         return true;
     }
 
+    @Override
+    public String getAddress() {
+        return getConfiguration().getServers();
+    }
+
     public ExecutorService createExecutor() {
         return 
getCamelContext().getExecutorServiceManager().newFixedThreadPool(this,
                 "NatsTopic[" + configuration.getTopic() + "]", 
configuration.getPoolSize());
diff --git 
a/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoEndpoint.java
 
b/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoEndpoint.java
index 8c8fc9a64cb..6e787178073 100644
--- 
a/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoEndpoint.java
+++ 
b/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoEndpoint.java
@@ -21,6 +21,7 @@ import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.RemoteAddressAware;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
@@ -32,12 +33,15 @@ import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
 import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
 import org.eclipse.paho.client.mqttv3.persist.MqttDefaultFilePersistence;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * Communicate with MQTT message brokers using Eclipse Paho MQTT Client.
  */
 @UriEndpoint(firstVersion = "2.16.0", scheme = "paho", title = "Paho", 
category = { Category.MESSAGING, Category.IOT },
              syntax = "paho:topic", headersClass = PahoConstants.class)
-public class PahoEndpoint extends DefaultEndpoint {
+public class PahoEndpoint extends DefaultEndpoint implements 
RemoteAddressAware {
 
     // Configuration members
     @UriPath(description = "Name of the topic")
@@ -69,6 +73,23 @@ public class PahoEndpoint extends DefaultEndpoint {
         return consumer;
     }
 
+    @Override
+    public String getAddress() {
+        return configuration.getBrokerUrl();
+    }
+
+    @Override
+    public Map<String, String> getAddressMetadata() {
+        Map<String, String> map = new HashMap<>();
+        if (configuration.getClientId() != null) {
+            map.put("clientId", configuration.getClientId());
+        }
+        if (configuration.getUserName() != null) {
+            map.put("username", configuration.getUserName());
+        }
+        return map.isEmpty() ? null : map;
+    }
+
     @Override
     public PahoComponent getComponent() {
         return (PahoComponent) super.getComponent();
diff --git 
a/components/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/SpringRabbitMQEndpoint.java
 
b/components/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/SpringRabbitMQEndpoint.java
index 20efa25834b..876428c6537 100644
--- 
a/components/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/SpringRabbitMQEndpoint.java
+++ 
b/components/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/SpringRabbitMQEndpoint.java
@@ -27,6 +27,7 @@ import org.apache.camel.PollingConsumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.RemoteAddressAware;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
@@ -56,7 +57,7 @@ import static 
org.apache.camel.component.springrabbit.SpringRabbitMQConstants.DI
 @UriEndpoint(firstVersion = "3.8.0", scheme = "spring-rabbitmq", title = 
"Spring RabbitMQ",
              syntax = "spring-rabbitmq:exchangeName",
              category = { Category.MESSAGING }, headersClass = 
SpringRabbitMQConstants.class)
-public class SpringRabbitMQEndpoint extends DefaultEndpoint implements 
AsyncEndpoint {
+public class SpringRabbitMQEndpoint extends DefaultEndpoint implements 
AsyncEndpoint, RemoteAddressAware {
 
     public static final String ARG_PREFIX = "arg.";
     public static final String CONSUMER_ARG_PREFIX = "consumer.";
@@ -211,6 +212,32 @@ public class SpringRabbitMQEndpoint extends 
DefaultEndpoint implements AsyncEndp
         }
     }
 
+    @Override
+    public String getAddress() {
+        int port = 0;
+        String host = null;
+        if (getConnectionFactory() != null) {
+            host = getConnectionFactory().getHost();
+            port = getConnectionFactory().getPort();
+        }
+        if (host != null) {
+            return host + ":" + port;
+        }
+        return null;
+    }
+
+    @Override
+    public Map<String, String> getAddressMetadata() {
+        String un = null;
+        if (getConnectionFactory() != null) {
+            un = getConnectionFactory().getUsername();
+        }
+        if (un != null) {
+            return Map.of("username", un);
+        }
+        return null;
+    }
+
     public String getExchangeName() {
         return exchangeName;
     }
diff --git 
a/components/camel-sql/src/main/java/org/apache/camel/component/sql/DefaultSqlEndpoint.java
 
b/components/camel-sql/src/main/java/org/apache/camel/component/sql/DefaultSqlEndpoint.java
index 82b1c0b0d1f..e17dc38f0d0 100644
--- 
a/components/camel-sql/src/main/java/org/apache/camel/component/sql/DefaultSqlEndpoint.java
+++ 
b/components/camel-sql/src/main/java/org/apache/camel/component/sql/DefaultSqlEndpoint.java
@@ -28,16 +28,18 @@ import javax.sql.DataSource;
 
 import org.apache.camel.Component;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.RemoteAddressAware;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.support.DefaultPollingEndpoint;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.RowMapper;
 import org.springframework.jdbc.core.RowMapperResultSetExtractor;
+import org.springframework.jdbc.datasource.AbstractDriverBasedDataSource;
 
 /**
  * Base class for SQL endpoints.
  */
-public abstract class DefaultSqlEndpoint extends DefaultPollingEndpoint {
+public abstract class DefaultSqlEndpoint extends DefaultPollingEndpoint 
implements RemoteAddressAware {
     private JdbcTemplate jdbcTemplate;
 
     @Metadata(autowired = true)
@@ -136,6 +138,25 @@ public abstract class DefaultSqlEndpoint extends 
DefaultPollingEndpoint {
         super(endpointUri, component);
     }
 
+    @Override
+    public String getAddress() {
+        if (dataSource != null && dataSource instanceof 
AbstractDriverBasedDataSource ads) {
+            return ads.getUrl();
+        }
+        return null;
+    }
+
+    @Override
+    public Map<String, String> getAddressMetadata() {
+        if (dataSource != null && dataSource instanceof 
AbstractDriverBasedDataSource ads) {
+            String u = ads.getUsername();
+            if (u != null) {
+                return Map.of("username", u);
+            }
+        }
+        return null;
+    }
+
     public JdbcTemplate getJdbcTemplate() {
         return jdbcTemplate;
     }
diff --git 
a/components/camel-stomp/src/main/java/org/apache/camel/component/stomp/StompEndpoint.java
 
b/components/camel-stomp/src/main/java/org/apache/camel/component/stomp/StompEndpoint.java
index 411e1a790e5..6364706a3db 100644
--- 
a/components/camel-stomp/src/main/java/org/apache/camel/component/stomp/StompEndpoint.java
+++ 
b/components/camel-stomp/src/main/java/org/apache/camel/component/stomp/StompEndpoint.java
@@ -33,6 +33,7 @@ import org.apache.camel.Producer;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.spi.HeaderFilterStrategyAware;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.RemoteAddressAware;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
@@ -59,7 +60,7 @@ import static 
org.fusesource.stomp.client.Constants.UNSUBSCRIBE;
  */
 @UriEndpoint(firstVersion = "2.12.0", scheme = "stomp", title = "Stomp", 
syntax = "stomp:destination",
              category = { Category.MESSAGING })
-public class StompEndpoint extends DefaultEndpoint implements AsyncEndpoint, 
HeaderFilterStrategyAware {
+public class StompEndpoint extends DefaultEndpoint implements AsyncEndpoint, 
HeaderFilterStrategyAware, RemoteAddressAware {
 
     private CallbackConnection connection;
     private Stomp stomp;
@@ -96,6 +97,19 @@ public class StompEndpoint extends DefaultEndpoint 
implements AsyncEndpoint, Hea
         return consumer;
     }
 
+    @Override
+    public String getAddress() {
+        return configuration.getBrokerURL();
+    }
+
+    @Override
+    public Map<String, String> getAddressMetadata() {
+        if (configuration.getLogin() != null) {
+            return Map.of("username", configuration.getLogin());
+        }
+        return null;
+    }
+
     @Override
     protected void doStart() throws Exception {
         final Promise<CallbackConnection> promise = new Promise<>();
diff --git 
a/components/camel-tracing/src/main/java/org/apache/camel/tracing/TagConstants.java
 
b/components/camel-tracing/src/main/java/org/apache/camel/tracing/TagConstants.java
index c15a847e381..83fe3155735 100644
--- 
a/components/camel-tracing/src/main/java/org/apache/camel/tracing/TagConstants.java
+++ 
b/components/camel-tracing/src/main/java/org/apache/camel/tracing/TagConstants.java
@@ -24,6 +24,10 @@ public class TagConstants {
     // General attributes
     public static final String SERVER_ADDRESS = "server.address";
 
+    // User attributes
+    public static final String USER_NAME = "user.name";
+    public static final String USER_ID = "user.id";
+
     // HTTP attributes
     public static final String HTTP_STATUS = "http.status_code";
     public static final String HTTP_METHOD = "http.method";
diff --git 
a/components/camel-tracing/src/main/java/org/apache/camel/tracing/decorators/AbstractSpanDecorator.java
 
b/components/camel-tracing/src/main/java/org/apache/camel/tracing/decorators/AbstractSpanDecorator.java
index ab50fd3babf..a3c8db212e0 100644
--- 
a/components/camel-tracing/src/main/java/org/apache/camel/tracing/decorators/AbstractSpanDecorator.java
+++ 
b/components/camel-tracing/src/main/java/org/apache/camel/tracing/decorators/AbstractSpanDecorator.java
@@ -20,6 +20,7 @@ import java.util.*;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
+import org.apache.camel.spi.RemoteAddressAware;
 import org.apache.camel.tracing.ExtractAdapter;
 import org.apache.camel.tracing.InjectAdapter;
 import org.apache.camel.tracing.SpanAdapter;
@@ -109,6 +110,24 @@ public abstract class AbstractSpanDecorator implements 
SpanDecorator {
         if (query != null) {
             span.setTag(TagConstants.URL_QUERY, query);
         }
+
+        if (endpoint instanceof RemoteAddressAware raa) {
+            String adr = raa.getAddress();
+            if (adr != null) {
+                span.setTag(TagConstants.SERVER_ADDRESS, adr);
+            }
+            Map map = raa.getAddressMetadata();
+            if (map != null) {
+                String un = (String) map.get("username");
+                if (un != null) {
+                    span.setTag(TagConstants.USER_NAME, un);
+                }
+                String id = (String) map.get("clientId");
+                if (id != null) {
+                    span.setTag(TagConstants.USER_ID, id);
+                }
+            }
+        }
     }
 
     @Override
@@ -146,4 +165,5 @@ public abstract class AbstractSpanDecorator implements 
SpanDecorator {
         // no encoding supported per default
         return new CamelHeadersInjectAdapter(map);
     }
+
 }
diff --git 
a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java
 b/core/camel-api/src/main/java/org/apache/camel/spi/RemoteAddressAware.java
similarity index 51%
copy from 
core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java
copy to 
core/camel-api/src/main/java/org/apache/camel/spi/RemoteAddressAware.java
index 048e98602d2..ee79407e835 100644
--- 
a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/RemoteAddressAware.java
@@ -14,28 +14,30 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.api.management.mbean;
+package org.apache.camel.spi;
 
-import org.apache.camel.api.management.ManagedAttribute;
-
-public interface ManagedEndpointMBean {
-
-    @ManagedAttribute(description = "Camel ID")
-    String getCamelId();
-
-    @ManagedAttribute(description = "Camel ManagementName")
-    String getCamelManagementName();
-
-    @ManagedAttribute(description = "Endpoint URI", mask = true)
-    String getEndpointUri();
-
-    @ManagedAttribute(description = "Endpoint Base URI (no query parameters)", 
mask = true)
-    String getEndpointBaseUri();
-
-    @ManagedAttribute(description = "Singleton")
-    boolean isSingleton();
-
-    @ManagedAttribute(description = "Endpoint State")
-    String getState();
+import java.util.Map;
 
+/**
+ * Used for getting information about remote URL used for connecting to a 
remote system,
+ * such as from an {@link org.apache.camel.Endpoint} or {@link 
org.apache.camel.Component}
+ * that connects to messaging brokers, cloud systems, databases etc.
+ */
+public interface RemoteAddressAware {
+
+    /**
+     * Gets the remote address such as URL or hostname
+     *
+     * @return the address or null if no address can be resolved
+     */
+    String getAddress();
+
+    /**
+     * Optional additional metadata that is relevant to the remote address as 
key value pairs
+     *
+     * @return optional metadata or null if no data
+     */
+    default Map<String, String> getAddressMetadata() {
+        return null;
+    }
 }
diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/EndpointDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/EndpointDevConsole.java
index 71bc9b899ce..75b43b6c657 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/EndpointDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/EndpointDevConsole.java
@@ -24,6 +24,7 @@ import java.util.Optional;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.spi.EndpointRegistry;
+import org.apache.camel.spi.RemoteAddressAware;
 import org.apache.camel.spi.RuntimeEndpointRegistry;
 import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.console.AbstractDevConsole;
@@ -74,6 +75,7 @@ public class EndpointDevConsole extends AbstractDevConsole {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     protected JsonObject doCallJson(Map<String, Object> options) {
         JsonObject root = new JsonObject();
 
@@ -96,6 +98,15 @@ public class EndpointDevConsole extends AbstractDevConsole {
             JsonObject jo = new JsonObject();
             boolean stub = 
e.getComponent().getClass().getSimpleName().equals("StubComponent");
             jo.put("uri", e.getEndpointUri());
+            if (e instanceof RemoteAddressAware raa) {
+                JsonObject ro = new JsonObject();
+                ro.put("address", raa.getAddress());
+                var d = raa.getAddressMetadata();
+                if (d != null) {
+                    ro.putAll(d);
+                }
+                jo.put("remote", ro);
+            }
             jo.put("stub", stub);
             var stat = findStats(stats, e.getEndpointUri());
             if (stat.isPresent()) {
diff --git 
a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java
 
b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java
index 048e98602d2..eac9172353c 100644
--- 
a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java
+++ 
b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.api.management.mbean;
 
+import java.util.Map;
+
 import org.apache.camel.api.management.ManagedAttribute;
 
 public interface ManagedEndpointMBean {
@@ -38,4 +40,10 @@ public interface ManagedEndpointMBean {
     @ManagedAttribute(description = "Endpoint State")
     String getState();
 
+    @ManagedAttribute(description = "Remote Address this endpoint is 
connecting (only available for some components)")
+    String getRemoteAddress();
+
+    @ManagedAttribute(description = "Remote Address metadata this endpoint is 
connecting (only available for some components)")
+    Map<String, String> getRemoteAddressMetadata();
+
 }
diff --git 
a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java
 
b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java
index 45bb556663b..80f27eaf16b 100644
--- 
a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java
+++ 
b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.management.mbean;
 
+import java.util.Map;
+
 import org.apache.camel.Endpoint;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.StatefulService;
@@ -23,6 +25,7 @@ import org.apache.camel.api.management.ManagedInstance;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.api.management.mbean.ManagedEndpointMBean;
 import org.apache.camel.spi.ManagementStrategy;
+import org.apache.camel.spi.RemoteAddressAware;
 
 @ManagedResource(description = "Managed Endpoint")
 public class ManagedEndpoint implements ManagedInstance, ManagedEndpointMBean {
@@ -77,6 +80,22 @@ public class ManagedEndpoint implements ManagedInstance, 
ManagedEndpointMBean {
         return ServiceStatus.Started.name();
     }
 
+    @Override
+    public String getRemoteAddress() {
+        if (endpoint instanceof RemoteAddressAware raa) {
+            return raa.getAddress();
+        }
+        return null;
+    }
+
+    @Override
+    public Map<String, String> getRemoteAddressMetadata() {
+        if (endpoint instanceof RemoteAddressAware raa) {
+            return raa.getAddressMetadata();
+        }
+        return null;
+    }
+
     @Override
     public Endpoint getInstance() {
         return endpoint;
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/IronMQEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/IronMQEndpointBuilderFactory.java
index ee1fb989476..81dc886e7c2 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/IronMQEndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/IronMQEndpointBuilderFactory.java
@@ -44,35 +44,6 @@ public interface IronMQEndpointBuilderFactory {
         default AdvancedIronMQEndpointConsumerBuilder advanced() {
             return (AdvancedIronMQEndpointConsumerBuilder) this;
         }
-        /**
-         * Reference to a io.iron.ironmq.Client in the Registry.
-         * 
-         * The option is a: <code>io.iron.ironmq.Client</code> type.
-         * 
-         * Group: common
-         * 
-         * @param client the value to set
-         * @return the dsl builder
-         */
-        default IronMQEndpointConsumerBuilder client(io.iron.ironmq.Client 
client) {
-            doSetProperty("client", client);
-            return this;
-        }
-        /**
-         * Reference to a io.iron.ironmq.Client in the Registry.
-         * 
-         * The option will be converted to a <code>io.iron.ironmq.Client</code>
-         * type.
-         * 
-         * Group: common
-         * 
-         * @param client the value to set
-         * @return the dsl builder
-         */
-        default IronMQEndpointConsumerBuilder client(String client) {
-            doSetProperty("client", client);
-            return this;
-        }
         /**
          * IronMq Cloud url. Urls for public clusters:
          * https://mq-aws-us-east-1-1.iron.io (US) and
@@ -140,20 +111,6 @@ public interface IronMQEndpointBuilderFactory {
             doSetProperty("projectId", projectId);
             return this;
         }
-        /**
-         * IronMQ token.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         * 
-         * @param token the value to set
-         * @return the dsl builder
-         */
-        default IronMQEndpointConsumerBuilder token(String token) {
-            doSetProperty("token", token);
-            return this;
-        }
         /**
          * Should messages be deleted in one batch. This will limit the number
          * of api requests since messages are deleted in one request, instead 
of
@@ -797,6 +754,20 @@ public interface IronMQEndpointBuilderFactory {
             doSetProperty("useFixedDelay", useFixedDelay);
             return this;
         }
+        /**
+         * IronMQ token.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param token the value to set
+         * @return the dsl builder
+         */
+        default IronMQEndpointConsumerBuilder token(String token) {
+            doSetProperty("token", token);
+            return this;
+        }
     }
 
     /**
@@ -961,29 +932,17 @@ public interface IronMQEndpointBuilderFactory {
             doSetProperty("pollStrategy", pollStrategy);
             return this;
         }
-    }
-
-    /**
-     * Builder for endpoint producers for the IronMQ component.
-     */
-    public interface IronMQEndpointProducerBuilder
-            extends
-                EndpointProducerBuilder {
-        default AdvancedIronMQEndpointProducerBuilder advanced() {
-            return (AdvancedIronMQEndpointProducerBuilder) this;
-        }
-
         /**
          * Reference to a io.iron.ironmq.Client in the Registry.
          * 
          * The option is a: <code>io.iron.ironmq.Client</code> type.
          * 
-         * Group: common
+         * Group: advanced
          * 
          * @param client the value to set
          * @return the dsl builder
          */
-        default IronMQEndpointProducerBuilder client(io.iron.ironmq.Client 
client) {
+        default AdvancedIronMQEndpointConsumerBuilder 
client(io.iron.ironmq.Client client) {
             doSetProperty("client", client);
             return this;
         }
@@ -993,15 +952,27 @@ public interface IronMQEndpointBuilderFactory {
          * The option will be converted to a <code>io.iron.ironmq.Client</code>
          * type.
          * 
-         * Group: common
+         * Group: advanced
          * 
          * @param client the value to set
          * @return the dsl builder
          */
-        default IronMQEndpointProducerBuilder client(String client) {
+        default AdvancedIronMQEndpointConsumerBuilder client(String client) {
             doSetProperty("client", client);
             return this;
         }
+    }
+
+    /**
+     * Builder for endpoint producers for the IronMQ component.
+     */
+    public interface IronMQEndpointProducerBuilder
+            extends
+                EndpointProducerBuilder {
+        default AdvancedIronMQEndpointProducerBuilder advanced() {
+            return (AdvancedIronMQEndpointProducerBuilder) this;
+        }
+
         /**
          * IronMq Cloud url. Urls for public clusters:
          * https://mq-aws-us-east-1-1.iron.io (US) and
@@ -1069,20 +1040,6 @@ public interface IronMQEndpointBuilderFactory {
             doSetProperty("projectId", projectId);
             return this;
         }
-        /**
-         * IronMQ token.
-         * 
-         * The option is a: <code>java.lang.String</code> type.
-         * 
-         * Group: common
-         * 
-         * @param token the value to set
-         * @return the dsl builder
-         */
-        default IronMQEndpointProducerBuilder token(String token) {
-            doSetProperty("token", token);
-            return this;
-        }
         /**
          * The item will not be available on the queue until this many seconds
          * have passed. Default is 0 seconds.
@@ -1113,6 +1070,20 @@ public interface IronMQEndpointBuilderFactory {
             doSetProperty("visibilityDelay", visibilityDelay);
             return this;
         }
+        /**
+         * IronMQ token.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param token the value to set
+         * @return the dsl builder
+         */
+        default IronMQEndpointProducerBuilder token(String token) {
+            doSetProperty("token", token);
+            return this;
+        }
     }
 
     /**
@@ -1169,30 +1140,17 @@ public interface IronMQEndpointBuilderFactory {
             doSetProperty("lazyStartProducer", lazyStartProducer);
             return this;
         }
-    }
-
-    /**
-     * Builder for endpoint for the IronMQ component.
-     */
-    public interface IronMQEndpointBuilder
-            extends
-                IronMQEndpointConsumerBuilder,
-                IronMQEndpointProducerBuilder {
-        default AdvancedIronMQEndpointBuilder advanced() {
-            return (AdvancedIronMQEndpointBuilder) this;
-        }
-
         /**
          * Reference to a io.iron.ironmq.Client in the Registry.
          * 
          * The option is a: <code>io.iron.ironmq.Client</code> type.
          * 
-         * Group: common
+         * Group: advanced
          * 
          * @param client the value to set
          * @return the dsl builder
          */
-        default IronMQEndpointBuilder client(io.iron.ironmq.Client client) {
+        default AdvancedIronMQEndpointProducerBuilder 
client(io.iron.ironmq.Client client) {
             doSetProperty("client", client);
             return this;
         }
@@ -1202,15 +1160,28 @@ public interface IronMQEndpointBuilderFactory {
          * The option will be converted to a <code>io.iron.ironmq.Client</code>
          * type.
          * 
-         * Group: common
+         * Group: advanced
          * 
          * @param client the value to set
          * @return the dsl builder
          */
-        default IronMQEndpointBuilder client(String client) {
+        default AdvancedIronMQEndpointProducerBuilder client(String client) {
             doSetProperty("client", client);
             return this;
         }
+    }
+
+    /**
+     * Builder for endpoint for the IronMQ component.
+     */
+    public interface IronMQEndpointBuilder
+            extends
+                IronMQEndpointConsumerBuilder,
+                IronMQEndpointProducerBuilder {
+        default AdvancedIronMQEndpointBuilder advanced() {
+            return (AdvancedIronMQEndpointBuilder) this;
+        }
+
         /**
          * IronMq Cloud url. Urls for public clusters:
          * https://mq-aws-us-east-1-1.iron.io (US) and
@@ -1283,7 +1254,7 @@ public interface IronMQEndpointBuilderFactory {
          * 
          * The option is a: <code>java.lang.String</code> type.
          * 
-         * Group: common
+         * Group: security
          * 
          * @param token the value to set
          * @return the dsl builder
@@ -1305,6 +1276,35 @@ public interface IronMQEndpointBuilderFactory {
             return (IronMQEndpointBuilder) this;
         }
 
+        /**
+         * Reference to a io.iron.ironmq.Client in the Registry.
+         * 
+         * The option is a: <code>io.iron.ironmq.Client</code> type.
+         * 
+         * Group: advanced
+         * 
+         * @param client the value to set
+         * @return the dsl builder
+         */
+        default AdvancedIronMQEndpointBuilder client(io.iron.ironmq.Client 
client) {
+            doSetProperty("client", client);
+            return this;
+        }
+        /**
+         * Reference to a io.iron.ironmq.Client in the Registry.
+         * 
+         * The option will be converted to a <code>io.iron.ironmq.Client</code>
+         * type.
+         * 
+         * Group: advanced
+         * 
+         * @param client the value to set
+         * @return the dsl builder
+         */
+        default AdvancedIronMQEndpointBuilder client(String client) {
+            doSetProperty("client", client);
+            return this;
+        }
     }
 
     public interface IronMQBuilders {
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEndpoint.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEndpoint.java
index 7fe9e947d19..893350ee544 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEndpoint.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEndpoint.java
@@ -20,6 +20,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
+import java.util.StringJoiner;
 
 import com.github.freva.asciitable.AsciiTable;
 import com.github.freva.asciitable.Column;
@@ -80,6 +81,10 @@ public class ListEndpoint extends ProcessWatchCommand {
                         description = "List endpoint URI in full details")
     boolean wideUri;
 
+    @CommandLine.Option(names = { "--address" },
+                        description = "List address specific information (only 
possible for some components)")
+    boolean address;
+
     public ListEndpoint(CamelJBangMain main) {
         super(main);
     }
@@ -112,6 +117,10 @@ public class ListEndpoint extends ProcessWatchCommand {
                                 }
                                 row.pid = Long.toString(ph.pid());
                                 row.endpoint = o.getString("uri");
+                                JsonObject ro = (JsonObject) o.get("remote");
+                                if (ro != null) {
+                                    row.address = ro;
+                                }
                                 row.stub = o.getBooleanOrDefault("stub", 
false);
                                 row.direction = o.getString("direction");
                                 row.total = o.getString("hits");
@@ -168,6 +177,9 @@ public class ListEndpoint extends ProcessWatchCommand {
                 new Column().header("DIR").with(r -> r.direction),
                 new Column().header("TOTAL").with(r -> r.total),
                 new 
Column().header("STUB").dataAlign(HorizontalAlign.CENTER).with(r -> r.stub ? 
"x" : ""),
+                new 
Column().header("ADDRESS").visible(address).dataAlign(HorizontalAlign.LEFT)
+                        .maxWidth(90, OverflowBehaviour.ELLIPSIS_RIGHT)
+                        .with(this::getAddress),
                 new 
Column().header("URI").visible(!wideUri).dataAlign(HorizontalAlign.LEFT)
                         .maxWidth(90, OverflowBehaviour.ELLIPSIS_RIGHT)
                         .with(this::getUri),
@@ -187,6 +199,23 @@ public class ListEndpoint extends ProcessWatchCommand {
         return u;
     }
 
+    private String getAddress(Row r) {
+        String a = "";
+        if (r.address != null) {
+            a = r.address.getString("address");
+            if (r.address.size() > 1) {
+                StringJoiner sj = new StringJoiner(" ");
+                r.address.forEach((k, v) -> {
+                    if (!"address".equals(k)) {
+                        sj.add(k + "=" + v);
+                    }
+                });
+                a = a + " (" + sj + ")";
+            }
+        }
+        return a;
+    }
+
     protected int sortRow(Row o1, Row o2) {
         String s = sort;
         int negate = 1;
@@ -217,6 +246,7 @@ public class ListEndpoint extends ProcessWatchCommand {
         String direction;
         String total;
         boolean stub;
+        JsonObject address;
     }
 
 }
diff --git 
a/dsl/camel-kotlin-api/src/generated/kotlin/org/apache/camel/kotlin/components/IronmqUriDsl.kt
 
b/dsl/camel-kotlin-api/src/generated/kotlin/org/apache/camel/kotlin/components/IronmqUriDsl.kt
index aac60be7a89..cccb5b9b66a 100644
--- 
a/dsl/camel-kotlin-api/src/generated/kotlin/org/apache/camel/kotlin/components/IronmqUriDsl.kt
+++ 
b/dsl/camel-kotlin-api/src/generated/kotlin/org/apache/camel/kotlin/components/IronmqUriDsl.kt
@@ -52,13 +52,6 @@ public class IronmqUriDsl(
     it.url("$queueName")
   }
 
-  /**
-   * Reference to a io.iron.ironmq.Client in the Registry.
-   */
-  public fun client(client: String) {
-    it.property("client", client)
-  }
-
   /**
    * IronMq Cloud url. Urls for public clusters: 
https://mq-aws-us-east-1-1.iron.io (US) and
    * https://mq-aws-eu-west-1-1.iron.io (EU)
@@ -92,13 +85,6 @@ public class IronmqUriDsl(
     it.property("projectId", projectId)
   }
 
-  /**
-   * IronMQ token
-   */
-  public fun token(token: String) {
-    it.property("token", token)
-  }
-
   /**
    * Should messages be deleted in one batch. This will limit the number of 
api requests since
    * messages are deleted in one request, instead of one pr. exchange. If 
enabled care should be taken
@@ -286,6 +272,13 @@ public class IronmqUriDsl(
     it.property("lazyStartProducer", lazyStartProducer.toString())
   }
 
+  /**
+   * Reference to a io.iron.ironmq.Client in the Registry.
+   */
+  public fun client(client: String) {
+    it.property("client", client)
+  }
+
   /**
    * The number of subsequent error polls (failed due some error) that should 
happen before the
    * backoffMultipler should kick-in.
@@ -466,4 +459,11 @@ public class IronmqUriDsl(
   public fun useFixedDelay(useFixedDelay: Boolean) {
     it.property("useFixedDelay", useFixedDelay.toString())
   }
+
+  /**
+   * IronMQ token
+   */
+  public fun token(token: String) {
+    it.property("token", token)
+  }
 }

Reply via email to