This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new d2eff648877e CAMEL-25873: camel-milo - the reconnectTimeout option
sets the delay between connection attempts (#28219)
d2eff648877e is described below
commit d2eff648877e2b7fb42473c189b6c8447392cee3
Author: Serdar Gökay <[email protected]>
AuthorDate: Wed Oct 21 22:07:27 2026 +0300
CAMEL-25873: camel-milo - the reconnectTimeout option sets the delay
between connection attempts (#28219)
* CAMEL-25873: camel-milo - the reconnectTimeout option sets the delay
between connection attempts
The reconnectTimeout setter of the milo-client and milo-browse components
set the request timeout of every
service call, and the delay between two connection attempts stayed fixed at
10 seconds. The new reconnectTimeout
option of the client configuration sets that delay, as an endpoint option
and through the component configuration,
and both component setters now set it. Its default of 10000 milliseconds
keeps the previous delay. A value of 0 or
less is rejected, because the client would try to connect again without
pause.
* CAMEL-25873: camel-milo - point the upgrade guide at the requestTimeout
option
The components have no setRequestTimeout method; the request timeout is the
requestTimeout option of the configuration.
Co-authored-by: Claude Fable 5.1 <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
---
.../camel/catalog/components/milo-browse.json | 38 ++++----
.../camel/catalog/components/milo-client.json | 38 ++++----
.../camel/catalog/docs/milo-client-component.adoc | 4 +-
.../milo/browse/MiloBrowseComponentConfigurer.java | 6 ++
.../milo/browse/MiloBrowseEndpointConfigurer.java | 6 ++
.../milo/browse/MiloBrowseEndpointUriFactory.java | 3 +-
.../milo/client/MiloClientComponentConfigurer.java | 6 ++
.../milo/client/MiloClientEndpointConfigurer.java | 6 ++
.../milo/client/MiloClientEndpointUriFactory.java | 3 +-
.../camel/component/milo/browse/milo-browse.json | 38 ++++----
.../camel/component/milo/client/milo-client.json | 38 ++++----
.../src/main/docs/milo-client-component.adoc | 4 +-
.../component/milo/browse/MiloBrowseComponent.java | 4 +-
.../component/milo/client/MiloClientComponent.java | 4 +-
.../milo/client/MiloClientConfiguration.java | 23 ++++-
.../milo/client/MiloClientConnection.java | 3 +-
.../component/milo/CommunicationLossTest.java | 37 ++++++++
.../milo/ReconnectTimeoutConfigurationTest.java | 96 +++++++++++++++++++
.../ROOT/pages/camel-4x-upgrade-guide-4_24.adoc | 8 ++
.../dsl/MiloBrowseComponentBuilderFactory.java | 20 ++++
.../dsl/MiloClientComponentBuilderFactory.java | 20 ++++
.../dsl/MiloBrowseEndpointBuilderFactory.java | 34 +++++++
.../dsl/MiloClientEndpointBuilderFactory.java | 102 +++++++++++++++++++++
23 files changed, 456 insertions(+), 85 deletions(-)
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/milo-browse.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/milo-browse.json
index e1b579a11e56..3978dcb93935 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/milo-browse.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/milo-browse.json
@@ -45,15 +45,16 @@
"overrideHost": { "index": 18, "kind": "property", "displayName":
"Override Host", "group": "client", "label": "client", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Override the server
reported endpoint host with the host from the endpoint URI." },
"overridePort": { "index": 19, "kind": "property", "displayName":
"Override Port", "group": "client", "label": "client", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Override the server
reported endpoint port with the port from the endpoint URI." },
"productUri": { "index": 20, "kind": "property", "displayName": "Product
Uri", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "defaultValue":
"http:\/\/camel.apache.org\/EclipseMilo", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The product URI" },
- "requestedPublishingInterval": { "index": 21, "kind": "property",
"displayName": "Requested Publishing Interval", "group": "client", "label":
"client", "required": false, "type": "number", "javaType": "java.lang.Double",
"deprecated": false, "autowired": false, "secret": false, "defaultValue":
"1_000.0", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The requested publishing
interval in mi [...]
- "requestTimeout": { "index": 22, "kind": "property", "displayName":
"Request Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Request timeout in
milliseconds" },
- "sessionName": { "index": 23, "kind": "property", "displayName": "Session
Name", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session name" },
- "sessionTimeout": { "index": 24, "kind": "property", "displayName":
"Session Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session timeout in
milliseconds" },
- "certificateValidator": { "index": 25, "kind": "property", "displayName":
"Certificate Validator", "group": "security", "label": "security", "required":
false, "type": "object", "javaType":
"org.eclipse.milo.opcua.stack.core.security.CertificateValidator",
"deprecated": false, "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "A custom validator for
the cer [...]
- "password": { "index": 26, "kind": "property", "displayName": "Password",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "security": "secret", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The password for
authentication. Use this instead of embedding credentials in the [...]
- "trustAllCertificates": { "index": 27, "kind": "property", "displayName":
"Trust All Certificates", "group": "security", "label": "security", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "security": "insecure:ssl",
"defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Whether to accept any
certificate [...]
- "trustListDirectory": { "index": 28, "kind": "property", "displayName":
"Trust List Directory", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The directory holding
the trust list used to validate the certificate of the OPC [...]
- "username": { "index": 29, "kind": "property", "displayName": "Username",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The username for
authentication. Use this instead of embedding credentials in the endpoint URI
when th [...]
+ "reconnectTimeout": { "index": 21, "kind": "property", "displayName":
"Reconnect Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": 10000, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The delay in
milliseconds before the client tries again to connect to the ser [...]
+ "requestedPublishingInterval": { "index": 22, "kind": "property",
"displayName": "Requested Publishing Interval", "group": "client", "label":
"client", "required": false, "type": "number", "javaType": "java.lang.Double",
"deprecated": false, "autowired": false, "secret": false, "defaultValue":
"1_000.0", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The requested publishing
interval in mi [...]
+ "requestTimeout": { "index": 23, "kind": "property", "displayName":
"Request Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Request timeout in
milliseconds" },
+ "sessionName": { "index": 24, "kind": "property", "displayName": "Session
Name", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session name" },
+ "sessionTimeout": { "index": 25, "kind": "property", "displayName":
"Session Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session timeout in
milliseconds" },
+ "certificateValidator": { "index": 26, "kind": "property", "displayName":
"Certificate Validator", "group": "security", "label": "security", "required":
false, "type": "object", "javaType":
"org.eclipse.milo.opcua.stack.core.security.CertificateValidator",
"deprecated": false, "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "A custom validator for
the cer [...]
+ "password": { "index": 27, "kind": "property", "displayName": "Password",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "security": "secret", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The password for
authentication. Use this instead of embedding credentials in the [...]
+ "trustAllCertificates": { "index": 28, "kind": "property", "displayName":
"Trust All Certificates", "group": "security", "label": "security", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "security": "insecure:ssl",
"defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Whether to accept any
certificate [...]
+ "trustListDirectory": { "index": 29, "kind": "property", "displayName":
"Trust List Directory", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The directory holding
the trust list used to validate the certificate of the OPC [...]
+ "username": { "index": 30, "kind": "property", "displayName": "Username",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The username for
authentication. Use this instead of embedding credentials in the endpoint URI
when th [...]
},
"headers": {
"CamelMiloNodeIds": { "index": 0, "kind": "header", "displayName": "",
"group": "producer", "label": "producer", "required": false, "javaType":
"List", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "description": "The node ids.", "constantName":
"org.apache.camel.component.milo.MiloConstants#HEADER_NODE_IDS" }
@@ -86,14 +87,15 @@
"overrideHost": { "index": 24, "kind": "parameter", "displayName":
"Override Host", "group": "client", "label": "client", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Override the server
reported endpoint host with the host from the endpoint URI." },
"overridePort": { "index": 25, "kind": "parameter", "displayName":
"Override Port", "group": "client", "label": "client", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Override the server
reported endpoint port with the port from the endpoint URI." },
"productUri": { "index": 26, "kind": "parameter", "displayName": "Product
Uri", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "defaultValue":
"http:\/\/camel.apache.org\/EclipseMilo", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The product URI" },
- "requestedPublishingInterval": { "index": 27, "kind": "parameter",
"displayName": "Requested Publishing Interval", "group": "client", "label":
"client", "required": false, "type": "number", "javaType": "java.lang.Double",
"deprecated": false, "autowired": false, "secret": false, "defaultValue":
"1_000.0", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The requested publishing
interval in m [...]
- "requestTimeout": { "index": 28, "kind": "parameter", "displayName":
"Request Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Request timeout in
milliseconds" },
- "sessionName": { "index": 29, "kind": "parameter", "displayName": "Session
Name", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session name" },
- "sessionTimeout": { "index": 30, "kind": "parameter", "displayName":
"Session Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session timeout in
milliseconds" },
- "certificateValidator": { "index": 31, "kind": "parameter", "displayName":
"Certificate Validator", "group": "security", "label": "security", "required":
false, "type": "object", "javaType":
"org.eclipse.milo.opcua.stack.core.security.CertificateValidator",
"deprecated": false, "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "A custom validator for
the ce [...]
- "password": { "index": 32, "kind": "parameter", "displayName": "Password",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "security": "secret", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The password for
authentication. Use this instead of embedding credentials in th [...]
- "trustAllCertificates": { "index": 33, "kind": "parameter", "displayName":
"Trust All Certificates", "group": "security", "label": "security", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "security": "insecure:ssl",
"defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Whether to accept any
certificat [...]
- "trustListDirectory": { "index": 34, "kind": "parameter", "displayName":
"Trust List Directory", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The directory holding
the trust list used to validate the certificate of the OP [...]
- "username": { "index": 35, "kind": "parameter", "displayName": "Username",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The username for
authentication. Use this instead of embedding credentials in the endpoint URI
when t [...]
+ "reconnectTimeout": { "index": 27, "kind": "parameter", "displayName":
"Reconnect Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": 10000, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The delay in
milliseconds before the client tries again to connect to the se [...]
+ "requestedPublishingInterval": { "index": 28, "kind": "parameter",
"displayName": "Requested Publishing Interval", "group": "client", "label":
"client", "required": false, "type": "number", "javaType": "java.lang.Double",
"deprecated": false, "autowired": false, "secret": false, "defaultValue":
"1_000.0", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The requested publishing
interval in m [...]
+ "requestTimeout": { "index": 29, "kind": "parameter", "displayName":
"Request Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Request timeout in
milliseconds" },
+ "sessionName": { "index": 30, "kind": "parameter", "displayName": "Session
Name", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session name" },
+ "sessionTimeout": { "index": 31, "kind": "parameter", "displayName":
"Session Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session timeout in
milliseconds" },
+ "certificateValidator": { "index": 32, "kind": "parameter", "displayName":
"Certificate Validator", "group": "security", "label": "security", "required":
false, "type": "object", "javaType":
"org.eclipse.milo.opcua.stack.core.security.CertificateValidator",
"deprecated": false, "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "A custom validator for
the ce [...]
+ "password": { "index": 33, "kind": "parameter", "displayName": "Password",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "security": "secret", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The password for
authentication. Use this instead of embedding credentials in th [...]
+ "trustAllCertificates": { "index": 34, "kind": "parameter", "displayName":
"Trust All Certificates", "group": "security", "label": "security", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "security": "insecure:ssl",
"defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Whether to accept any
certificat [...]
+ "trustListDirectory": { "index": 35, "kind": "parameter", "displayName":
"Trust List Directory", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The directory holding
the trust list used to validate the certificate of the OP [...]
+ "username": { "index": 36, "kind": "parameter", "displayName": "Username",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The username for
authentication. Use this instead of embedding credentials in the endpoint URI
when t [...]
}
}
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/milo-client.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/milo-client.json
index 8daa6a597d8d..a8d6bb84cf4a 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/milo-client.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/milo-client.json
@@ -46,15 +46,16 @@
"overrideHost": { "index": 19, "kind": "property", "displayName":
"Override Host", "group": "client", "label": "client", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Override the server
reported endpoint host with the host from the endpoint URI." },
"overridePort": { "index": 20, "kind": "property", "displayName":
"Override Port", "group": "client", "label": "client", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Override the server
reported endpoint port with the port from the endpoint URI." },
"productUri": { "index": 21, "kind": "property", "displayName": "Product
Uri", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "defaultValue":
"http:\/\/camel.apache.org\/EclipseMilo", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The product URI" },
- "requestedPublishingInterval": { "index": 22, "kind": "property",
"displayName": "Requested Publishing Interval", "group": "client", "label":
"client", "required": false, "type": "number", "javaType": "java.lang.Double",
"deprecated": false, "autowired": false, "secret": false, "defaultValue":
"1_000.0", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The requested publishing
interval in mi [...]
- "requestTimeout": { "index": 23, "kind": "property", "displayName":
"Request Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Request timeout in
milliseconds" },
- "sessionName": { "index": 24, "kind": "property", "displayName": "Session
Name", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session name" },
- "sessionTimeout": { "index": 25, "kind": "property", "displayName":
"Session Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session timeout in
milliseconds" },
- "certificateValidator": { "index": 26, "kind": "property", "displayName":
"Certificate Validator", "group": "security", "label": "security", "required":
false, "type": "object", "javaType":
"org.eclipse.milo.opcua.stack.core.security.CertificateValidator",
"deprecated": false, "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "A custom validator for
the cer [...]
- "password": { "index": 27, "kind": "property", "displayName": "Password",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "security": "secret", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The password for
authentication. Use this instead of embedding credentials in the [...]
- "trustAllCertificates": { "index": 28, "kind": "property", "displayName":
"Trust All Certificates", "group": "security", "label": "security", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "security": "insecure:ssl",
"defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Whether to accept any
certificate [...]
- "trustListDirectory": { "index": 29, "kind": "property", "displayName":
"Trust List Directory", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The directory holding
the trust list used to validate the certificate of the OPC [...]
- "username": { "index": 30, "kind": "property", "displayName": "Username",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The username for
authentication. Use this instead of embedding credentials in the endpoint URI
when th [...]
+ "reconnectTimeout": { "index": 22, "kind": "property", "displayName":
"Reconnect Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": 10000, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The delay in
milliseconds before the client tries again to connect to the ser [...]
+ "requestedPublishingInterval": { "index": 23, "kind": "property",
"displayName": "Requested Publishing Interval", "group": "client", "label":
"client", "required": false, "type": "number", "javaType": "java.lang.Double",
"deprecated": false, "autowired": false, "secret": false, "defaultValue":
"1_000.0", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The requested publishing
interval in mi [...]
+ "requestTimeout": { "index": 24, "kind": "property", "displayName":
"Request Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Request timeout in
milliseconds" },
+ "sessionName": { "index": 25, "kind": "property", "displayName": "Session
Name", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session name" },
+ "sessionTimeout": { "index": 26, "kind": "property", "displayName":
"Session Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session timeout in
milliseconds" },
+ "certificateValidator": { "index": 27, "kind": "property", "displayName":
"Certificate Validator", "group": "security", "label": "security", "required":
false, "type": "object", "javaType":
"org.eclipse.milo.opcua.stack.core.security.CertificateValidator",
"deprecated": false, "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "A custom validator for
the cer [...]
+ "password": { "index": 28, "kind": "property", "displayName": "Password",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "security": "secret", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The password for
authentication. Use this instead of embedding credentials in the [...]
+ "trustAllCertificates": { "index": 29, "kind": "property", "displayName":
"Trust All Certificates", "group": "security", "label": "security", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "security": "insecure:ssl",
"defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Whether to accept any
certificate [...]
+ "trustListDirectory": { "index": 30, "kind": "property", "displayName":
"Trust List Directory", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The directory holding
the trust list used to validate the certificate of the OPC [...]
+ "username": { "index": 31, "kind": "property", "displayName": "Username",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The username for
authentication. Use this instead of embedding credentials in the endpoint URI
when th [...]
},
"headers": {
"CamelMiloNodeIds": { "index": 0, "kind": "header", "displayName": "",
"group": "producer", "label": "producer", "required": false, "javaType":
"List", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "description": "The node ids.", "constantName":
"org.apache.camel.component.milo.MiloConstants#HEADER_NODE_IDS" },
@@ -95,14 +96,15 @@
"overrideHost": { "index": 30, "kind": "parameter", "displayName":
"Override Host", "group": "client", "label": "client", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Override the server
reported endpoint host with the host from the endpoint URI." },
"overridePort": { "index": 31, "kind": "parameter", "displayName":
"Override Port", "group": "client", "label": "client", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Override the server
reported endpoint port with the port from the endpoint URI." },
"productUri": { "index": 32, "kind": "parameter", "displayName": "Product
Uri", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "defaultValue":
"http:\/\/camel.apache.org\/EclipseMilo", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The product URI" },
- "requestedPublishingInterval": { "index": 33, "kind": "parameter",
"displayName": "Requested Publishing Interval", "group": "client", "label":
"client", "required": false, "type": "number", "javaType": "java.lang.Double",
"deprecated": false, "autowired": false, "secret": false, "defaultValue":
"1_000.0", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The requested publishing
interval in m [...]
- "requestTimeout": { "index": 34, "kind": "parameter", "displayName":
"Request Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Request timeout in
milliseconds" },
- "sessionName": { "index": 35, "kind": "parameter", "displayName": "Session
Name", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session name" },
- "sessionTimeout": { "index": 36, "kind": "parameter", "displayName":
"Session Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session timeout in
milliseconds" },
- "certificateValidator": { "index": 37, "kind": "parameter", "displayName":
"Certificate Validator", "group": "security", "label": "security", "required":
false, "type": "object", "javaType":
"org.eclipse.milo.opcua.stack.core.security.CertificateValidator",
"deprecated": false, "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "A custom validator for
the ce [...]
- "password": { "index": 38, "kind": "parameter", "displayName": "Password",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "security": "secret", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The password for
authentication. Use this instead of embedding credentials in th [...]
- "trustAllCertificates": { "index": 39, "kind": "parameter", "displayName":
"Trust All Certificates", "group": "security", "label": "security", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "security": "insecure:ssl",
"defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Whether to accept any
certificat [...]
- "trustListDirectory": { "index": 40, "kind": "parameter", "displayName":
"Trust List Directory", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The directory holding
the trust list used to validate the certificate of the OP [...]
- "username": { "index": 41, "kind": "parameter", "displayName": "Username",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The username for
authentication. Use this instead of embedding credentials in the endpoint URI
when t [...]
+ "reconnectTimeout": { "index": 33, "kind": "parameter", "displayName":
"Reconnect Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": 10000, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The delay in
milliseconds before the client tries again to connect to the se [...]
+ "requestedPublishingInterval": { "index": 34, "kind": "parameter",
"displayName": "Requested Publishing Interval", "group": "client", "label":
"client", "required": false, "type": "number", "javaType": "java.lang.Double",
"deprecated": false, "autowired": false, "secret": false, "defaultValue":
"1_000.0", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The requested publishing
interval in m [...]
+ "requestTimeout": { "index": 35, "kind": "parameter", "displayName":
"Request Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Request timeout in
milliseconds" },
+ "sessionName": { "index": 36, "kind": "parameter", "displayName": "Session
Name", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session name" },
+ "sessionTimeout": { "index": 37, "kind": "parameter", "displayName":
"Session Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session timeout in
milliseconds" },
+ "certificateValidator": { "index": 38, "kind": "parameter", "displayName":
"Certificate Validator", "group": "security", "label": "security", "required":
false, "type": "object", "javaType":
"org.eclipse.milo.opcua.stack.core.security.CertificateValidator",
"deprecated": false, "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "A custom validator for
the ce [...]
+ "password": { "index": 39, "kind": "parameter", "displayName": "Password",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "security": "secret", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The password for
authentication. Use this instead of embedding credentials in th [...]
+ "trustAllCertificates": { "index": 40, "kind": "parameter", "displayName":
"Trust All Certificates", "group": "security", "label": "security", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "security": "insecure:ssl",
"defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Whether to accept any
certificat [...]
+ "trustListDirectory": { "index": 41, "kind": "parameter", "displayName":
"Trust List Directory", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The directory holding
the trust list used to validate the certificate of the OP [...]
+ "username": { "index": 42, "kind": "parameter", "displayName": "Username",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The username for
authentication. Use this instead of embedding credentials in the endpoint URI
when t [...]
}
}
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/milo-client-component.adoc
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/milo-client-component.adoc
index 3ba0ced7902e..9de57764a695 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/milo-client-component.adoc
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/milo-client-component.adoc
@@ -404,8 +404,8 @@ If neither option is configured, the client does not
connect to an endpoint that
insecure: the connection is encrypted, but the client does not authenticate
the server it talks to.
When the server certificate cannot be validated, the client logs a `WARN`
message that starts with `Failed to
-connect`, and tries again every 10 seconds, so a certificate moved to
`trusted/certs` is used at the next attempt. A
-producer fails with `IllegalStateException: No connected`, whose cause gives
the reason.
+connect`, and tries again after `reconnectTimeout` (10 seconds by default), so
a certificate moved to `trusted/certs`
+is used at the next attempt. A producer fails with `IllegalStateException: No
connected`, whose cause gives the reason.
The same validator checks the server certificate that the user name and
password are encrypted with. With the
security policy `None`, the server is not authenticated, whatever the
configuration.
diff --git
a/components/camel-milo/src/generated/java/org/apache/camel/component/milo/browse/MiloBrowseComponentConfigurer.java
b/components/camel-milo/src/generated/java/org/apache/camel/component/milo/browse/MiloBrowseComponentConfigurer.java
index af20ae108216..ebad9c87dd3e 100644
---
a/components/camel-milo/src/generated/java/org/apache/camel/component/milo/browse/MiloBrowseComponentConfigurer.java
+++
b/components/camel-milo/src/generated/java/org/apache/camel/component/milo/browse/MiloBrowseComponentConfigurer.java
@@ -74,6 +74,8 @@ public class MiloBrowseComponentConfigurer extends
PropertyConfigurerSupport imp
case "password":
getOrCreateConfiguration(target).setPassword(property(camelContext,
java.lang.String.class, value)); return true;
case "producturi":
case "productUri":
getOrCreateConfiguration(target).setProductUri(property(camelContext,
java.lang.String.class, value)); return true;
+ case "reconnecttimeout":
+ case "reconnectTimeout":
getOrCreateConfiguration(target).setReconnectTimeout(property(camelContext,
long.class, value)); return true;
case "requesttimeout":
case "requestTimeout":
getOrCreateConfiguration(target).setRequestTimeout(property(camelContext,
java.lang.Long.class, value)); return true;
case "requestedpublishinginterval":
@@ -143,6 +145,8 @@ public class MiloBrowseComponentConfigurer extends
PropertyConfigurerSupport imp
case "password": return java.lang.String.class;
case "producturi":
case "productUri": return java.lang.String.class;
+ case "reconnecttimeout":
+ case "reconnectTimeout": return long.class;
case "requesttimeout":
case "requestTimeout": return java.lang.Long.class;
case "requestedpublishinginterval":
@@ -208,6 +212,8 @@ public class MiloBrowseComponentConfigurer extends
PropertyConfigurerSupport imp
case "password": return getOrCreateConfiguration(target).getPassword();
case "producturi":
case "productUri": return
getOrCreateConfiguration(target).getProductUri();
+ case "reconnecttimeout":
+ case "reconnectTimeout": return
getOrCreateConfiguration(target).getReconnectTimeout();
case "requesttimeout":
case "requestTimeout": return
getOrCreateConfiguration(target).getRequestTimeout();
case "requestedpublishinginterval":
diff --git
a/components/camel-milo/src/generated/java/org/apache/camel/component/milo/browse/MiloBrowseEndpointConfigurer.java
b/components/camel-milo/src/generated/java/org/apache/camel/component/milo/browse/MiloBrowseEndpointConfigurer.java
index b67504f356a5..3078685e3729 100644
---
a/components/camel-milo/src/generated/java/org/apache/camel/component/milo/browse/MiloBrowseEndpointConfigurer.java
+++
b/components/camel-milo/src/generated/java/org/apache/camel/component/milo/browse/MiloBrowseEndpointConfigurer.java
@@ -72,6 +72,8 @@ public class MiloBrowseEndpointConfigurer extends
PropertyConfigurerSupport impl
case "password":
target.getConfiguration().setPassword(property(camelContext,
java.lang.String.class, value)); return true;
case "producturi":
case "productUri":
target.getConfiguration().setProductUri(property(camelContext,
java.lang.String.class, value)); return true;
+ case "reconnecttimeout":
+ case "reconnectTimeout":
target.getConfiguration().setReconnectTimeout(property(camelContext,
long.class, value)); return true;
case "recursive": target.setRecursive(property(camelContext,
boolean.class, value)); return true;
case "requesttimeout":
case "requestTimeout":
target.getConfiguration().setRequestTimeout(property(camelContext,
java.lang.Long.class, value)); return true;
@@ -142,6 +144,8 @@ public class MiloBrowseEndpointConfigurer extends
PropertyConfigurerSupport impl
case "password": return java.lang.String.class;
case "producturi":
case "productUri": return java.lang.String.class;
+ case "reconnecttimeout":
+ case "reconnectTimeout": return long.class;
case "recursive": return boolean.class;
case "requesttimeout":
case "requestTimeout": return java.lang.Long.class;
@@ -213,6 +217,8 @@ public class MiloBrowseEndpointConfigurer extends
PropertyConfigurerSupport impl
case "password": return target.getConfiguration().getPassword();
case "producturi":
case "productUri": return target.getConfiguration().getProductUri();
+ case "reconnecttimeout":
+ case "reconnectTimeout": return
target.getConfiguration().getReconnectTimeout();
case "recursive": return target.isRecursive();
case "requesttimeout":
case "requestTimeout": return
target.getConfiguration().getRequestTimeout();
diff --git
a/components/camel-milo/src/generated/java/org/apache/camel/component/milo/browse/MiloBrowseEndpointUriFactory.java
b/components/camel-milo/src/generated/java/org/apache/camel/component/milo/browse/MiloBrowseEndpointUriFactory.java
index 28d4029a8635..56aa8da10602 100644
---
a/components/camel-milo/src/generated/java/org/apache/camel/component/milo/browse/MiloBrowseEndpointUriFactory.java
+++
b/components/camel-milo/src/generated/java/org/apache/camel/component/milo/browse/MiloBrowseEndpointUriFactory.java
@@ -24,7 +24,7 @@ public class MiloBrowseEndpointUriFactory extends
org.apache.camel.support.compo
private static final Set<String> ENDPOINT_IDENTITY_PROPERTY_NAMES;
private static final Map<String, String> MULTI_VALUE_PREFIXES;
static {
- Set<String> props = new HashSet<>(36);
+ Set<String> props = new HashSet<>(37);
props.add("allowedSecurityPolicies");
props.add("applicationName");
props.add("applicationUri");
@@ -53,6 +53,7 @@ public class MiloBrowseEndpointUriFactory extends
org.apache.camel.support.compo
props.add("overridePort");
props.add("password");
props.add("productUri");
+ props.add("reconnectTimeout");
props.add("recursive");
props.add("requestTimeout");
props.add("requestedPublishingInterval");
diff --git
a/components/camel-milo/src/generated/java/org/apache/camel/component/milo/client/MiloClientComponentConfigurer.java
b/components/camel-milo/src/generated/java/org/apache/camel/component/milo/client/MiloClientComponentConfigurer.java
index a360bc71a2c0..1c4f1f6ae863 100644
---
a/components/camel-milo/src/generated/java/org/apache/camel/component/milo/client/MiloClientComponentConfigurer.java
+++
b/components/camel-milo/src/generated/java/org/apache/camel/component/milo/client/MiloClientComponentConfigurer.java
@@ -76,6 +76,8 @@ public class MiloClientComponentConfigurer extends
PropertyConfigurerSupport imp
case "password":
getOrCreateConfiguration(target).setPassword(property(camelContext,
java.lang.String.class, value)); return true;
case "producturi":
case "productUri":
getOrCreateConfiguration(target).setProductUri(property(camelContext,
java.lang.String.class, value)); return true;
+ case "reconnecttimeout":
+ case "reconnectTimeout":
getOrCreateConfiguration(target).setReconnectTimeout(property(camelContext,
long.class, value)); return true;
case "requesttimeout":
case "requestTimeout":
getOrCreateConfiguration(target).setRequestTimeout(property(camelContext,
java.lang.Long.class, value)); return true;
case "requestedpublishinginterval":
@@ -147,6 +149,8 @@ public class MiloClientComponentConfigurer extends
PropertyConfigurerSupport imp
case "password": return java.lang.String.class;
case "producturi":
case "productUri": return java.lang.String.class;
+ case "reconnecttimeout":
+ case "reconnectTimeout": return long.class;
case "requesttimeout":
case "requestTimeout": return java.lang.Long.class;
case "requestedpublishinginterval":
@@ -214,6 +218,8 @@ public class MiloClientComponentConfigurer extends
PropertyConfigurerSupport imp
case "password": return getOrCreateConfiguration(target).getPassword();
case "producturi":
case "productUri": return
getOrCreateConfiguration(target).getProductUri();
+ case "reconnecttimeout":
+ case "reconnectTimeout": return
getOrCreateConfiguration(target).getReconnectTimeout();
case "requesttimeout":
case "requestTimeout": return
getOrCreateConfiguration(target).getRequestTimeout();
case "requestedpublishinginterval":
diff --git
a/components/camel-milo/src/generated/java/org/apache/camel/component/milo/client/MiloClientEndpointConfigurer.java
b/components/camel-milo/src/generated/java/org/apache/camel/component/milo/client/MiloClientEndpointConfigurer.java
index a31809fd82e2..9c8c96f2ccf1 100644
---
a/components/camel-milo/src/generated/java/org/apache/camel/component/milo/client/MiloClientEndpointConfigurer.java
+++
b/components/camel-milo/src/generated/java/org/apache/camel/component/milo/client/MiloClientEndpointConfigurer.java
@@ -85,6 +85,8 @@ public class MiloClientEndpointConfigurer extends
PropertyConfigurerSupport impl
case "productUri":
target.getConfiguration().setProductUri(property(camelContext,
java.lang.String.class, value)); return true;
case "queuesize":
case "queueSize": target.setQueueSize(property(camelContext,
java.lang.Integer.class, value)); return true;
+ case "reconnecttimeout":
+ case "reconnectTimeout":
target.getConfiguration().setReconnectTimeout(property(camelContext,
long.class, value)); return true;
case "requesttimeout":
case "requestTimeout":
target.getConfiguration().setRequestTimeout(property(camelContext,
java.lang.Long.class, value)); return true;
case "requestedpublishinginterval":
@@ -169,6 +171,8 @@ public class MiloClientEndpointConfigurer extends
PropertyConfigurerSupport impl
case "productUri": return java.lang.String.class;
case "queuesize":
case "queueSize": return java.lang.Integer.class;
+ case "reconnecttimeout":
+ case "reconnectTimeout": return long.class;
case "requesttimeout":
case "requestTimeout": return java.lang.Long.class;
case "requestedpublishinginterval":
@@ -254,6 +258,8 @@ public class MiloClientEndpointConfigurer extends
PropertyConfigurerSupport impl
case "productUri": return target.getConfiguration().getProductUri();
case "queuesize":
case "queueSize": return target.getQueueSize();
+ case "reconnecttimeout":
+ case "reconnectTimeout": return
target.getConfiguration().getReconnectTimeout();
case "requesttimeout":
case "requestTimeout": return
target.getConfiguration().getRequestTimeout();
case "requestedpublishinginterval":
diff --git
a/components/camel-milo/src/generated/java/org/apache/camel/component/milo/client/MiloClientEndpointUriFactory.java
b/components/camel-milo/src/generated/java/org/apache/camel/component/milo/client/MiloClientEndpointUriFactory.java
index fe6f76a6cfee..ba2a323510d7 100644
---
a/components/camel-milo/src/generated/java/org/apache/camel/component/milo/client/MiloClientEndpointUriFactory.java
+++
b/components/camel-milo/src/generated/java/org/apache/camel/component/milo/client/MiloClientEndpointUriFactory.java
@@ -24,7 +24,7 @@ public class MiloClientEndpointUriFactory extends
org.apache.camel.support.compo
private static final Set<String> ENDPOINT_IDENTITY_PROPERTY_NAMES;
private static final Map<String, String> MULTI_VALUE_PREFIXES;
static {
- Set<String> props = new HashSet<>(42);
+ Set<String> props = new HashSet<>(43);
props.add("allowedSecurityPolicies");
props.add("applicationName");
props.add("applicationUri");
@@ -59,6 +59,7 @@ public class MiloClientEndpointUriFactory extends
org.apache.camel.support.compo
props.add("password");
props.add("productUri");
props.add("queueSize");
+ props.add("reconnectTimeout");
props.add("requestTimeout");
props.add("requestedPublishingInterval");
props.add("samplingInterval");
diff --git
a/components/camel-milo/src/generated/resources/META-INF/org/apache/camel/component/milo/browse/milo-browse.json
b/components/camel-milo/src/generated/resources/META-INF/org/apache/camel/component/milo/browse/milo-browse.json
index e1b579a11e56..3978dcb93935 100644
---
a/components/camel-milo/src/generated/resources/META-INF/org/apache/camel/component/milo/browse/milo-browse.json
+++
b/components/camel-milo/src/generated/resources/META-INF/org/apache/camel/component/milo/browse/milo-browse.json
@@ -45,15 +45,16 @@
"overrideHost": { "index": 18, "kind": "property", "displayName":
"Override Host", "group": "client", "label": "client", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Override the server
reported endpoint host with the host from the endpoint URI." },
"overridePort": { "index": 19, "kind": "property", "displayName":
"Override Port", "group": "client", "label": "client", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Override the server
reported endpoint port with the port from the endpoint URI." },
"productUri": { "index": 20, "kind": "property", "displayName": "Product
Uri", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "defaultValue":
"http:\/\/camel.apache.org\/EclipseMilo", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The product URI" },
- "requestedPublishingInterval": { "index": 21, "kind": "property",
"displayName": "Requested Publishing Interval", "group": "client", "label":
"client", "required": false, "type": "number", "javaType": "java.lang.Double",
"deprecated": false, "autowired": false, "secret": false, "defaultValue":
"1_000.0", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The requested publishing
interval in mi [...]
- "requestTimeout": { "index": 22, "kind": "property", "displayName":
"Request Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Request timeout in
milliseconds" },
- "sessionName": { "index": 23, "kind": "property", "displayName": "Session
Name", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session name" },
- "sessionTimeout": { "index": 24, "kind": "property", "displayName":
"Session Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session timeout in
milliseconds" },
- "certificateValidator": { "index": 25, "kind": "property", "displayName":
"Certificate Validator", "group": "security", "label": "security", "required":
false, "type": "object", "javaType":
"org.eclipse.milo.opcua.stack.core.security.CertificateValidator",
"deprecated": false, "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "A custom validator for
the cer [...]
- "password": { "index": 26, "kind": "property", "displayName": "Password",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "security": "secret", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The password for
authentication. Use this instead of embedding credentials in the [...]
- "trustAllCertificates": { "index": 27, "kind": "property", "displayName":
"Trust All Certificates", "group": "security", "label": "security", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "security": "insecure:ssl",
"defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Whether to accept any
certificate [...]
- "trustListDirectory": { "index": 28, "kind": "property", "displayName":
"Trust List Directory", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The directory holding
the trust list used to validate the certificate of the OPC [...]
- "username": { "index": 29, "kind": "property", "displayName": "Username",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The username for
authentication. Use this instead of embedding credentials in the endpoint URI
when th [...]
+ "reconnectTimeout": { "index": 21, "kind": "property", "displayName":
"Reconnect Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": 10000, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The delay in
milliseconds before the client tries again to connect to the ser [...]
+ "requestedPublishingInterval": { "index": 22, "kind": "property",
"displayName": "Requested Publishing Interval", "group": "client", "label":
"client", "required": false, "type": "number", "javaType": "java.lang.Double",
"deprecated": false, "autowired": false, "secret": false, "defaultValue":
"1_000.0", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The requested publishing
interval in mi [...]
+ "requestTimeout": { "index": 23, "kind": "property", "displayName":
"Request Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Request timeout in
milliseconds" },
+ "sessionName": { "index": 24, "kind": "property", "displayName": "Session
Name", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session name" },
+ "sessionTimeout": { "index": 25, "kind": "property", "displayName":
"Session Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session timeout in
milliseconds" },
+ "certificateValidator": { "index": 26, "kind": "property", "displayName":
"Certificate Validator", "group": "security", "label": "security", "required":
false, "type": "object", "javaType":
"org.eclipse.milo.opcua.stack.core.security.CertificateValidator",
"deprecated": false, "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "A custom validator for
the cer [...]
+ "password": { "index": 27, "kind": "property", "displayName": "Password",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "security": "secret", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The password for
authentication. Use this instead of embedding credentials in the [...]
+ "trustAllCertificates": { "index": 28, "kind": "property", "displayName":
"Trust All Certificates", "group": "security", "label": "security", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "security": "insecure:ssl",
"defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Whether to accept any
certificate [...]
+ "trustListDirectory": { "index": 29, "kind": "property", "displayName":
"Trust List Directory", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The directory holding
the trust list used to validate the certificate of the OPC [...]
+ "username": { "index": 30, "kind": "property", "displayName": "Username",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The username for
authentication. Use this instead of embedding credentials in the endpoint URI
when th [...]
},
"headers": {
"CamelMiloNodeIds": { "index": 0, "kind": "header", "displayName": "",
"group": "producer", "label": "producer", "required": false, "javaType":
"List", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "description": "The node ids.", "constantName":
"org.apache.camel.component.milo.MiloConstants#HEADER_NODE_IDS" }
@@ -86,14 +87,15 @@
"overrideHost": { "index": 24, "kind": "parameter", "displayName":
"Override Host", "group": "client", "label": "client", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Override the server
reported endpoint host with the host from the endpoint URI." },
"overridePort": { "index": 25, "kind": "parameter", "displayName":
"Override Port", "group": "client", "label": "client", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Override the server
reported endpoint port with the port from the endpoint URI." },
"productUri": { "index": 26, "kind": "parameter", "displayName": "Product
Uri", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "defaultValue":
"http:\/\/camel.apache.org\/EclipseMilo", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The product URI" },
- "requestedPublishingInterval": { "index": 27, "kind": "parameter",
"displayName": "Requested Publishing Interval", "group": "client", "label":
"client", "required": false, "type": "number", "javaType": "java.lang.Double",
"deprecated": false, "autowired": false, "secret": false, "defaultValue":
"1_000.0", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The requested publishing
interval in m [...]
- "requestTimeout": { "index": 28, "kind": "parameter", "displayName":
"Request Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Request timeout in
milliseconds" },
- "sessionName": { "index": 29, "kind": "parameter", "displayName": "Session
Name", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session name" },
- "sessionTimeout": { "index": 30, "kind": "parameter", "displayName":
"Session Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session timeout in
milliseconds" },
- "certificateValidator": { "index": 31, "kind": "parameter", "displayName":
"Certificate Validator", "group": "security", "label": "security", "required":
false, "type": "object", "javaType":
"org.eclipse.milo.opcua.stack.core.security.CertificateValidator",
"deprecated": false, "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "A custom validator for
the ce [...]
- "password": { "index": 32, "kind": "parameter", "displayName": "Password",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "security": "secret", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The password for
authentication. Use this instead of embedding credentials in th [...]
- "trustAllCertificates": { "index": 33, "kind": "parameter", "displayName":
"Trust All Certificates", "group": "security", "label": "security", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "security": "insecure:ssl",
"defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Whether to accept any
certificat [...]
- "trustListDirectory": { "index": 34, "kind": "parameter", "displayName":
"Trust List Directory", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The directory holding
the trust list used to validate the certificate of the OP [...]
- "username": { "index": 35, "kind": "parameter", "displayName": "Username",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The username for
authentication. Use this instead of embedding credentials in the endpoint URI
when t [...]
+ "reconnectTimeout": { "index": 27, "kind": "parameter", "displayName":
"Reconnect Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": 10000, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The delay in
milliseconds before the client tries again to connect to the se [...]
+ "requestedPublishingInterval": { "index": 28, "kind": "parameter",
"displayName": "Requested Publishing Interval", "group": "client", "label":
"client", "required": false, "type": "number", "javaType": "java.lang.Double",
"deprecated": false, "autowired": false, "secret": false, "defaultValue":
"1_000.0", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The requested publishing
interval in m [...]
+ "requestTimeout": { "index": 29, "kind": "parameter", "displayName":
"Request Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Request timeout in
milliseconds" },
+ "sessionName": { "index": 30, "kind": "parameter", "displayName": "Session
Name", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session name" },
+ "sessionTimeout": { "index": 31, "kind": "parameter", "displayName":
"Session Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session timeout in
milliseconds" },
+ "certificateValidator": { "index": 32, "kind": "parameter", "displayName":
"Certificate Validator", "group": "security", "label": "security", "required":
false, "type": "object", "javaType":
"org.eclipse.milo.opcua.stack.core.security.CertificateValidator",
"deprecated": false, "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "A custom validator for
the ce [...]
+ "password": { "index": 33, "kind": "parameter", "displayName": "Password",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "security": "secret", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The password for
authentication. Use this instead of embedding credentials in th [...]
+ "trustAllCertificates": { "index": 34, "kind": "parameter", "displayName":
"Trust All Certificates", "group": "security", "label": "security", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "security": "insecure:ssl",
"defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Whether to accept any
certificat [...]
+ "trustListDirectory": { "index": 35, "kind": "parameter", "displayName":
"Trust List Directory", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The directory holding
the trust list used to validate the certificate of the OP [...]
+ "username": { "index": 36, "kind": "parameter", "displayName": "Username",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The username for
authentication. Use this instead of embedding credentials in the endpoint URI
when t [...]
}
}
diff --git
a/components/camel-milo/src/generated/resources/META-INF/org/apache/camel/component/milo/client/milo-client.json
b/components/camel-milo/src/generated/resources/META-INF/org/apache/camel/component/milo/client/milo-client.json
index 8daa6a597d8d..a8d6bb84cf4a 100644
---
a/components/camel-milo/src/generated/resources/META-INF/org/apache/camel/component/milo/client/milo-client.json
+++
b/components/camel-milo/src/generated/resources/META-INF/org/apache/camel/component/milo/client/milo-client.json
@@ -46,15 +46,16 @@
"overrideHost": { "index": 19, "kind": "property", "displayName":
"Override Host", "group": "client", "label": "client", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Override the server
reported endpoint host with the host from the endpoint URI." },
"overridePort": { "index": 20, "kind": "property", "displayName":
"Override Port", "group": "client", "label": "client", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Override the server
reported endpoint port with the port from the endpoint URI." },
"productUri": { "index": 21, "kind": "property", "displayName": "Product
Uri", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "defaultValue":
"http:\/\/camel.apache.org\/EclipseMilo", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The product URI" },
- "requestedPublishingInterval": { "index": 22, "kind": "property",
"displayName": "Requested Publishing Interval", "group": "client", "label":
"client", "required": false, "type": "number", "javaType": "java.lang.Double",
"deprecated": false, "autowired": false, "secret": false, "defaultValue":
"1_000.0", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The requested publishing
interval in mi [...]
- "requestTimeout": { "index": 23, "kind": "property", "displayName":
"Request Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Request timeout in
milliseconds" },
- "sessionName": { "index": 24, "kind": "property", "displayName": "Session
Name", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session name" },
- "sessionTimeout": { "index": 25, "kind": "property", "displayName":
"Session Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session timeout in
milliseconds" },
- "certificateValidator": { "index": 26, "kind": "property", "displayName":
"Certificate Validator", "group": "security", "label": "security", "required":
false, "type": "object", "javaType":
"org.eclipse.milo.opcua.stack.core.security.CertificateValidator",
"deprecated": false, "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "A custom validator for
the cer [...]
- "password": { "index": 27, "kind": "property", "displayName": "Password",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "security": "secret", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The password for
authentication. Use this instead of embedding credentials in the [...]
- "trustAllCertificates": { "index": 28, "kind": "property", "displayName":
"Trust All Certificates", "group": "security", "label": "security", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "security": "insecure:ssl",
"defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Whether to accept any
certificate [...]
- "trustListDirectory": { "index": 29, "kind": "property", "displayName":
"Trust List Directory", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The directory holding
the trust list used to validate the certificate of the OPC [...]
- "username": { "index": 30, "kind": "property", "displayName": "Username",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The username for
authentication. Use this instead of embedding credentials in the endpoint URI
when th [...]
+ "reconnectTimeout": { "index": 22, "kind": "property", "displayName":
"Reconnect Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": 10000, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The delay in
milliseconds before the client tries again to connect to the ser [...]
+ "requestedPublishingInterval": { "index": 23, "kind": "property",
"displayName": "Requested Publishing Interval", "group": "client", "label":
"client", "required": false, "type": "number", "javaType": "java.lang.Double",
"deprecated": false, "autowired": false, "secret": false, "defaultValue":
"1_000.0", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The requested publishing
interval in mi [...]
+ "requestTimeout": { "index": 24, "kind": "property", "displayName":
"Request Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Request timeout in
milliseconds" },
+ "sessionName": { "index": 25, "kind": "property", "displayName": "Session
Name", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session name" },
+ "sessionTimeout": { "index": 26, "kind": "property", "displayName":
"Session Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session timeout in
milliseconds" },
+ "certificateValidator": { "index": 27, "kind": "property", "displayName":
"Certificate Validator", "group": "security", "label": "security", "required":
false, "type": "object", "javaType":
"org.eclipse.milo.opcua.stack.core.security.CertificateValidator",
"deprecated": false, "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "A custom validator for
the cer [...]
+ "password": { "index": 28, "kind": "property", "displayName": "Password",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "security": "secret", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The password for
authentication. Use this instead of embedding credentials in the [...]
+ "trustAllCertificates": { "index": 29, "kind": "property", "displayName":
"Trust All Certificates", "group": "security", "label": "security", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "security": "insecure:ssl",
"defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Whether to accept any
certificate [...]
+ "trustListDirectory": { "index": 30, "kind": "property", "displayName":
"Trust List Directory", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The directory holding
the trust list used to validate the certificate of the OPC [...]
+ "username": { "index": 31, "kind": "property", "displayName": "Username",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The username for
authentication. Use this instead of embedding credentials in the endpoint URI
when th [...]
},
"headers": {
"CamelMiloNodeIds": { "index": 0, "kind": "header", "displayName": "",
"group": "producer", "label": "producer", "required": false, "javaType":
"List", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "description": "The node ids.", "constantName":
"org.apache.camel.component.milo.MiloConstants#HEADER_NODE_IDS" },
@@ -95,14 +96,15 @@
"overrideHost": { "index": 30, "kind": "parameter", "displayName":
"Override Host", "group": "client", "label": "client", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Override the server
reported endpoint host with the host from the endpoint URI." },
"overridePort": { "index": 31, "kind": "parameter", "displayName":
"Override Port", "group": "client", "label": "client", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Override the server
reported endpoint port with the port from the endpoint URI." },
"productUri": { "index": 32, "kind": "parameter", "displayName": "Product
Uri", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "defaultValue":
"http:\/\/camel.apache.org\/EclipseMilo", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The product URI" },
- "requestedPublishingInterval": { "index": 33, "kind": "parameter",
"displayName": "Requested Publishing Interval", "group": "client", "label":
"client", "required": false, "type": "number", "javaType": "java.lang.Double",
"deprecated": false, "autowired": false, "secret": false, "defaultValue":
"1_000.0", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The requested publishing
interval in m [...]
- "requestTimeout": { "index": 34, "kind": "parameter", "displayName":
"Request Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Request timeout in
milliseconds" },
- "sessionName": { "index": 35, "kind": "parameter", "displayName": "Session
Name", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session name" },
- "sessionTimeout": { "index": 36, "kind": "parameter", "displayName":
"Session Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session timeout in
milliseconds" },
- "certificateValidator": { "index": 37, "kind": "parameter", "displayName":
"Certificate Validator", "group": "security", "label": "security", "required":
false, "type": "object", "javaType":
"org.eclipse.milo.opcua.stack.core.security.CertificateValidator",
"deprecated": false, "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "A custom validator for
the ce [...]
- "password": { "index": 38, "kind": "parameter", "displayName": "Password",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "security": "secret", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The password for
authentication. Use this instead of embedding credentials in th [...]
- "trustAllCertificates": { "index": 39, "kind": "parameter", "displayName":
"Trust All Certificates", "group": "security", "label": "security", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "security": "insecure:ssl",
"defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Whether to accept any
certificat [...]
- "trustListDirectory": { "index": 40, "kind": "parameter", "displayName":
"Trust List Directory", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The directory holding
the trust list used to validate the certificate of the OP [...]
- "username": { "index": 41, "kind": "parameter", "displayName": "Username",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The username for
authentication. Use this instead of embedding credentials in the endpoint URI
when t [...]
+ "reconnectTimeout": { "index": 33, "kind": "parameter", "displayName":
"Reconnect Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": 10000, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The delay in
milliseconds before the client tries again to connect to the se [...]
+ "requestedPublishingInterval": { "index": 34, "kind": "parameter",
"displayName": "Requested Publishing Interval", "group": "client", "label":
"client", "required": false, "type": "number", "javaType": "java.lang.Double",
"deprecated": false, "autowired": false, "secret": false, "defaultValue":
"1_000.0", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The requested publishing
interval in m [...]
+ "requestTimeout": { "index": 35, "kind": "parameter", "displayName":
"Request Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Request timeout in
milliseconds" },
+ "sessionName": { "index": 36, "kind": "parameter", "displayName": "Session
Name", "group": "client", "label": "client", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session name" },
+ "sessionTimeout": { "index": 37, "kind": "parameter", "displayName":
"Session Timeout", "group": "client", "label": "client", "required": false,
"type": "integer", "javaType": "java.lang.Long", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Session timeout in
milliseconds" },
+ "certificateValidator": { "index": 38, "kind": "parameter", "displayName":
"Certificate Validator", "group": "security", "label": "security", "required":
false, "type": "object", "javaType":
"org.eclipse.milo.opcua.stack.core.security.CertificateValidator",
"deprecated": false, "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "A custom validator for
the ce [...]
+ "password": { "index": 39, "kind": "parameter", "displayName": "Password",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "security": "secret", "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The password for
authentication. Use this instead of embedding credentials in th [...]
+ "trustAllCertificates": { "index": 40, "kind": "parameter", "displayName":
"Trust All Certificates", "group": "security", "label": "security", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "security": "insecure:ssl",
"defaultValue": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "Whether to accept any
certificat [...]
+ "trustListDirectory": { "index": 41, "kind": "parameter", "displayName":
"Trust List Directory", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The directory holding
the trust list used to validate the certificate of the OP [...]
+ "username": { "index": 42, "kind": "parameter", "displayName": "Username",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.milo.client.MiloClientConfiguration",
"configurationField": "configuration", "description": "The username for
authentication. Use this instead of embedding credentials in the endpoint URI
when t [...]
}
}
diff --git a/components/camel-milo/src/main/docs/milo-client-component.adoc
b/components/camel-milo/src/main/docs/milo-client-component.adoc
index 3ba0ced7902e..9de57764a695 100644
--- a/components/camel-milo/src/main/docs/milo-client-component.adoc
+++ b/components/camel-milo/src/main/docs/milo-client-component.adoc
@@ -404,8 +404,8 @@ If neither option is configured, the client does not
connect to an endpoint that
insecure: the connection is encrypted, but the client does not authenticate
the server it talks to.
When the server certificate cannot be validated, the client logs a `WARN`
message that starts with `Failed to
-connect`, and tries again every 10 seconds, so a certificate moved to
`trusted/certs` is used at the next attempt. A
-producer fails with `IllegalStateException: No connected`, whose cause gives
the reason.
+connect`, and tries again after `reconnectTimeout` (10 seconds by default), so
a certificate moved to `trusted/certs`
+is used at the next attempt. A producer fails with `IllegalStateException: No
connected`, whose cause gives the reason.
The same validator checks the server certificate that the user name and
password are encrypted with. With the
security policy `None`, the server is not authenticated, whatever the
configuration.
diff --git
a/components/camel-milo/src/main/java/org/apache/camel/component/milo/browse/MiloBrowseComponent.java
b/components/camel-milo/src/main/java/org/apache/camel/component/milo/browse/MiloBrowseComponent.java
index 2e32eb3061f2..c976f3bcba88 100644
---
a/components/camel-milo/src/main/java/org/apache/camel/component/milo/browse/MiloBrowseComponent.java
+++
b/components/camel-milo/src/main/java/org/apache/camel/component/milo/browse/MiloBrowseComponent.java
@@ -84,10 +84,10 @@ public class MiloBrowseComponent extends DefaultComponent {
}
/**
- * Default reconnect timeout
+ * Default delay in milliseconds between two attempts to connect to the
server
*/
public void setReconnectTimeout(final Long reconnectTimeout) {
- this.configuration.setRequestTimeout(reconnectTimeout);
+ this.configuration.setReconnectTimeout(reconnectTimeout);
}
public MiloClientConnectionManager getMiloClientConnectionManager() {
diff --git
a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientComponent.java
b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientComponent.java
index 71440d552a48..952ed9b5627a 100644
---
a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientComponent.java
+++
b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientComponent.java
@@ -80,10 +80,10 @@ public class MiloClientComponent extends DefaultComponent {
}
/**
- * Default reconnect timeout
+ * Default delay in milliseconds between two attempts to connect to the
server
*/
public void setReconnectTimeout(final Long reconnectTimeout) {
- this.configuration.setRequestTimeout(reconnectTimeout);
+ this.configuration.setReconnectTimeout(reconnectTimeout);
}
public MiloClientConnectionManager getMiloClientConnectionManager() {
diff --git
a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConfiguration.java
b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConfiguration.java
index 3916cf652d48..405bd529cb8b 100644
---
a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConfiguration.java
+++
b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConfiguration.java
@@ -72,6 +72,9 @@ public class MiloClientConfiguration implements Cloneable {
@UriParam(label = "client")
private Long requestTimeout;
+ @UriParam(label = "client", defaultValue = "10000")
+ private long reconnectTimeout = 10_000;
+
@UriParam(label = "client")
private Long channelLifetime;
@@ -141,6 +144,7 @@ public class MiloClientConfiguration implements Cloneable {
this.applicationUri = other.applicationUri;
this.productUri = other.productUri;
this.requestTimeout = other.requestTimeout;
+ this.reconnectTimeout = other.reconnectTimeout;
this.channelLifetime = other.channelLifetime;
this.sessionName = other.sessionName;
this.maxPendingPublishRequests = other.maxPendingPublishRequests;
@@ -241,14 +245,29 @@ public class MiloClientConfiguration implements Cloneable
{
/**
* Request timeout in milliseconds
*/
- public void setRequestTimeout(final Long reconnectTimeout) {
- this.requestTimeout = reconnectTimeout;
+ public void setRequestTimeout(final Long requestTimeout) {
+ this.requestTimeout = requestTimeout;
}
public Long getRequestTimeout() {
return this.requestTimeout;
}
+ /**
+ * The delay in milliseconds before the client tries again to connect to
the server after an attempt failed. It is
+ * not used while the OPC UA client recovers a lost session on its own.
+ */
+ public void setReconnectTimeout(final long reconnectTimeout) {
+ if (reconnectTimeout <= 0) {
+ throw new IllegalArgumentException("reconnectTimeout must be > 0,
got: " + reconnectTimeout);
+ }
+ this.reconnectTimeout = reconnectTimeout;
+ }
+
+ public long getReconnectTimeout() {
+ return this.reconnectTimeout;
+ }
+
/**
* Channel lifetime in milliseconds
*/
diff --git
a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConnection.java
b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConnection.java
index f0837e2fe1aa..64168c9197fa 100644
---
a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConnection.java
+++
b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConnection.java
@@ -125,7 +125,8 @@ public class MiloClientConnection implements AutoCloseable,
CamelContextAware {
// when the connection is closed
this.reconnectExecutor =
executorServiceManager.newSingleThreadScheduledExecutor(this,
"MiloClientReconnect");
- this.manager = new SubscriptionManager(this.configuration,
this.reconnectExecutor, this.executor, 10_000);
+ this.manager = new SubscriptionManager(
+ this.configuration, this.reconnectExecutor, this.executor,
this.configuration.getReconnectTimeout());
}
@Override
diff --git
a/components/camel-milo/src/test/java/org/apache/camel/component/milo/CommunicationLossTest.java
b/components/camel-milo/src/test/java/org/apache/camel/component/milo/CommunicationLossTest.java
index 958faad13dd4..02a3faa341e2 100644
---
a/components/camel-milo/src/test/java/org/apache/camel/component/milo/CommunicationLossTest.java
+++
b/components/camel-milo/src/test/java/org/apache/camel/component/milo/CommunicationLossTest.java
@@ -65,6 +65,8 @@ public class CommunicationLossTest extends
AbstractMiloServerTest {
private static final String MOCK_LATE = "mock:late";
+ private static final String MOCK_RECONNECT_TIMEOUT =
"mock:reconnectTimeout";
+
private static final String MOCK_UNKNOWN = "mock:unknown";
private static final String MILO_CLIENT_UNKNOWN
@@ -76,6 +78,9 @@ public class CommunicationLossTest extends
AbstractMiloServerTest {
@EndpointInject(MOCK_LATE)
protected MockEndpoint lateEndpoint;
+ @EndpointInject(MOCK_RECONNECT_TIMEOUT)
+ protected MockEndpoint reconnectTimeoutEndpoint;
+
@EndpointInject(MOCK_UNKNOWN)
protected MockEndpoint unknownEndpoint;
@@ -88,10 +93,15 @@ public class CommunicationLossTest extends
AbstractMiloServerTest {
@RegisterExtension
AvailablePortFinder.Port lateRelayPort = AvailablePortFinder.find();
+ @RegisterExtension
+ AvailablePortFinder.Port reconnectTimeoutRelayPort =
AvailablePortFinder.find();
+
private final Relay relay = new Relay();
private final Relay lateRelay = new Relay();
+ private final Relay reconnectTimeoutRelay = new Relay();
+
@Override
protected RoutesBuilder createRouteBuilder() {
return new RouteBuilder() {
@@ -110,6 +120,11 @@ public class CommunicationLossTest extends
AbstractMiloServerTest {
// its own relay, so its own connection, which the test starts
while the relay is down
from(resolve(MILO_CLIENT_ITEM_1).replace("@@relay@@",
Integer.toString(lateRelayPort.getPort())))
.routeId("late").autoStartup(false).to(MOCK_LATE);
+
+ // the same, with a delay between two connection attempts
shorter than the default
+ from(resolve(MILO_CLIENT_ITEM_1).replace("@@relay@@",
Integer.toString(reconnectTimeoutRelayPort.getPort()))
+ + "&reconnectTimeout=1000")
+
.routeId("reconnectTimeout").autoStartup(false).to(MOCK_RECONNECT_TIMEOUT);
}
};
}
@@ -124,6 +139,7 @@ public class CommunicationLossTest extends
AbstractMiloServerTest {
// after the context, so that its clients disconnect through the relays
relay.stop();
lateRelay.stop();
+ reconnectTimeoutRelay.stop();
}
@Test
@@ -216,6 +232,27 @@ public class CommunicationLossTest extends
AbstractMiloServerTest {
lateEndpoint.assertIsSatisfied();
}
+ @Test
+ void
consumerStartedWithoutTheServerConnectsAfterTheConfiguredReconnectTimeout()
throws Exception {
+ producer1.sendBody("Foo");
+
+ // the relay is down: the consumer reports its node once, while it
keeps trying to connect every second
+ reconnectTimeoutEndpoint.expectedMessageCount(1);
+ reconnectTimeoutEndpoint.setAssertPeriod(3_000);
+ testBody(reconnectTimeoutEndpoint.message(0), assertNoCommunication());
+ context.getRouteController().startRoute("reconnectTimeout");
+ reconnectTimeoutEndpoint.assertIsSatisfied();
+
+ // the server becomes reachable: the next attempt, at most a second
later, delivers the current value, long
+ // before the default delay of 10 seconds after the first attempt
would have passed
+ reconnectTimeoutEndpoint.reset();
+ reconnectTimeoutEndpoint.expectedMessageCount(1);
+ reconnectTimeoutEndpoint.setResultWaitTime(5_000);
+ testBody(reconnectTimeoutEndpoint.message(0), assertGoodValue("Foo"));
+ reconnectTimeoutRelay.start(reconnectTimeoutRelayPort.getPort(),
getServerPort());
+ reconnectTimeoutEndpoint.assertIsSatisfied();
+ }
+
/**
* A TCP relay to the server, whose connections the test can drop while it
keeps listening, and which can be down
* while the client tries to connect.
diff --git
a/components/camel-milo/src/test/java/org/apache/camel/component/milo/ReconnectTimeoutConfigurationTest.java
b/components/camel-milo/src/test/java/org/apache/camel/component/milo/ReconnectTimeoutConfigurationTest.java
new file mode 100644
index 000000000000..03a2760e7492
--- /dev/null
+++
b/components/camel-milo/src/test/java/org/apache/camel/component/milo/ReconnectTimeoutConfigurationTest.java
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.milo;
+
+import org.apache.camel.ResolveEndpointFailedException;
+import org.apache.camel.component.milo.browse.MiloBrowseComponent;
+import org.apache.camel.component.milo.browse.MiloBrowseEndpoint;
+import org.apache.camel.component.milo.client.MiloClientComponent;
+import org.apache.camel.component.milo.client.MiloClientEndpoint;
+import org.apache.camel.test.junit6.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+/**
+ * The reconnect timeout is the delay between two connection attempts, and not
the timeout of the requests.
+ */
+public class ReconnectTimeoutConfigurationTest extends CamelTestSupport {
+
+ private static final String SERVER = "opc.tcp://localhost:4840";
+
+ @Test
+ void endpointsWithoutTheOptionWaitTenSecondsBetweenTwoConnectionAttempts()
{
+ assertEquals(10_000L,
+ context.getEndpoint("milo-client:" + SERVER,
MiloClientEndpoint.class).getConfiguration()
+ .getReconnectTimeout());
+ assertEquals(10_000L,
+ context.getEndpoint("milo-browse:" + SERVER,
MiloBrowseEndpoint.class).getConfiguration()
+ .getReconnectTimeout());
+ }
+
+ @Test
+ void endpointUriSetsTheReconnectTimeout() {
+ final MiloClientEndpoint client
+ = context.getEndpoint("milo-client:" + SERVER +
"?reconnectTimeout=1500", MiloClientEndpoint.class);
+ assertEquals(1_500L, client.getConfiguration().getReconnectTimeout());
+ assertNull(client.getConfiguration().getRequestTimeout());
+
+ final MiloBrowseEndpoint browse
+ = context.getEndpoint("milo-browse:" + SERVER +
"?reconnectTimeout=1500", MiloBrowseEndpoint.class);
+ assertEquals(1_500L, browse.getConfiguration().getReconnectTimeout());
+ assertNull(browse.getConfiguration().getRequestTimeout());
+ }
+
+ @Test
+ void clientComponentSetsTheDefaultReconnectTimeoutOfItsEndpoints() {
+ final MiloClientComponent component =
context.getComponent("milo-client", MiloClientComponent.class);
+ component.setReconnectTimeout(2_000L);
+
+ assertEquals(2_000L,
component.getConfiguration().getReconnectTimeout());
+ assertNull(component.getConfiguration().getRequestTimeout());
+
+ final MiloClientEndpoint endpoint = context.getEndpoint("milo-client:"
+ SERVER, MiloClientEndpoint.class);
+ assertEquals(2_000L,
endpoint.getConfiguration().getReconnectTimeout());
+ assertNull(endpoint.getConfiguration().getRequestTimeout());
+ }
+
+ @Test
+ void browseComponentSetsTheDefaultReconnectTimeoutOfItsEndpoints() {
+ final MiloBrowseComponent component =
context.getComponent("milo-browse", MiloBrowseComponent.class);
+ component.setReconnectTimeout(2_000L);
+
+ assertEquals(2_000L,
component.getConfiguration().getReconnectTimeout());
+ assertNull(component.getConfiguration().getRequestTimeout());
+
+ final MiloBrowseEndpoint endpoint = context.getEndpoint("milo-browse:"
+ SERVER, MiloBrowseEndpoint.class);
+ assertEquals(2_000L,
endpoint.getConfiguration().getReconnectTimeout());
+ assertNull(endpoint.getConfiguration().getRequestTimeout());
+ }
+
+ @Test
+ void reconnectTimeoutThatIsNotPositiveIsRejected() {
+ // no delay would make the client try to connect again and again, as
fast as the server refuses
+ assertThrows(ResolveEndpointFailedException.class,
+ () -> context.getEndpoint("milo-client:" + SERVER +
"?reconnectTimeout=0"));
+
+ final MiloClientComponent component =
context.getComponent("milo-client", MiloClientComponent.class);
+ assertThrows(IllegalArgumentException.class, () ->
component.setReconnectTimeout(-1L));
+ }
+}
diff --git
a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_24.adoc
b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_24.adoc
index b992efb54f7e..db8c88aa6b90 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_24.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_24.adoc
@@ -2145,6 +2145,14 @@ To keep the previous behaviour, filter the exchanges
with a bad status out right
`filter(simple("${body.statusCode.bad} == false"))`. This also drops the other
bad statuses, such as the refusal of a
node, and the current values delivered after an outage still arrive.
+=== camel-milo - the reconnectTimeout of the components sets the delay between
connection attempts
+
+`setReconnectTimeout` on the `milo-client` and `milo-browse` components set
the request timeout of every service call,
+and the delay between two connection attempts stayed 10 seconds. It now sets
that delay, which the new
+`reconnectTimeout` option of both endpoints and components sets too; its
default of 10000 milliseconds is the previous
+delay, and a value of 0 or less is rejected. To set the request timeout, use
the `requestTimeout` option instead
+(for example `camel.component.milo-client.requestTimeout`, or
`getConfiguration().setRequestTimeout(...)` in Java).
+
=== camel-protobuf - a bytes field in a Map
When a protobuf message is converted to a `Map` (for example
`getBody(Map.class)` after unmarshalling), the value of
diff --git
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/MiloBrowseComponentBuilderFactory.java
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/MiloBrowseComponentBuilderFactory.java
index 832c3c13b8cb..a62b8f20e278 100644
---
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/MiloBrowseComponentBuilderFactory.java
+++
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/MiloBrowseComponentBuilderFactory.java
@@ -401,6 +401,25 @@ public interface MiloBrowseComponentBuilderFactory {
}
+ /**
+ * The delay in milliseconds before the client tries again to connect
to
+ * the server after an attempt failed. It is not used while the OPC UA
+ * client recovers a lost session on its own.
+ *
+ * The option is a: <code>long</code> type.
+ *
+ * Default: 10000
+ * Group: client
+ *
+ * @param reconnectTimeout the value to set
+ * @return the dsl builder
+ */
+ default MiloBrowseComponentBuilder reconnectTimeout(long
reconnectTimeout) {
+ doSetProperty("reconnectTimeout", reconnectTimeout);
+ return this;
+ }
+
+
/**
* The requested publishing interval in milliseconds.
*
@@ -602,6 +621,7 @@ public interface MiloBrowseComponentBuilderFactory {
case "overrideHost":
getOrCreateConfiguration((MiloBrowseComponent)
component).setOverrideHost((boolean) value); return true;
case "overridePort":
getOrCreateConfiguration((MiloBrowseComponent)
component).setOverridePort((boolean) value); return true;
case "productUri": getOrCreateConfiguration((MiloBrowseComponent)
component).setProductUri((java.lang.String) value); return true;
+ case "reconnectTimeout":
getOrCreateConfiguration((MiloBrowseComponent)
component).setReconnectTimeout((long) value); return true;
case "requestedPublishingInterval":
getOrCreateConfiguration((MiloBrowseComponent)
component).setRequestedPublishingInterval((java.lang.Double) value); return
true;
case "requestTimeout":
getOrCreateConfiguration((MiloBrowseComponent)
component).setRequestTimeout((java.lang.Long) value); return true;
case "sessionName": getOrCreateConfiguration((MiloBrowseComponent)
component).setSessionName((java.lang.String) value); return true;
diff --git
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/MiloClientComponentBuilderFactory.java
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/MiloClientComponentBuilderFactory.java
index 6fd19bb55fc6..93bc2728c8bc 100644
---
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/MiloClientComponentBuilderFactory.java
+++
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/MiloClientComponentBuilderFactory.java
@@ -429,6 +429,25 @@ public interface MiloClientComponentBuilderFactory {
}
+ /**
+ * The delay in milliseconds before the client tries again to connect
to
+ * the server after an attempt failed. It is not used while the OPC UA
+ * client recovers a lost session on its own.
+ *
+ * The option is a: <code>long</code> type.
+ *
+ * Default: 10000
+ * Group: client
+ *
+ * @param reconnectTimeout the value to set
+ * @return the dsl builder
+ */
+ default MiloClientComponentBuilder reconnectTimeout(long
reconnectTimeout) {
+ doSetProperty("reconnectTimeout", reconnectTimeout);
+ return this;
+ }
+
+
/**
* The requested publishing interval in milliseconds.
*
@@ -631,6 +650,7 @@ public interface MiloClientComponentBuilderFactory {
case "overrideHost":
getOrCreateConfiguration((MiloClientComponent)
component).setOverrideHost((boolean) value); return true;
case "overridePort":
getOrCreateConfiguration((MiloClientComponent)
component).setOverridePort((boolean) value); return true;
case "productUri": getOrCreateConfiguration((MiloClientComponent)
component).setProductUri((java.lang.String) value); return true;
+ case "reconnectTimeout":
getOrCreateConfiguration((MiloClientComponent)
component).setReconnectTimeout((long) value); return true;
case "requestedPublishingInterval":
getOrCreateConfiguration((MiloClientComponent)
component).setRequestedPublishingInterval((java.lang.Double) value); return
true;
case "requestTimeout":
getOrCreateConfiguration((MiloClientComponent)
component).setRequestTimeout((java.lang.Long) value); return true;
case "sessionName": getOrCreateConfiguration((MiloClientComponent)
component).setSessionName((java.lang.String) value); return true;
diff --git
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/MiloBrowseEndpointBuilderFactory.java
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/MiloBrowseEndpointBuilderFactory.java
index 2371bf904c42..0a70112a1778 100644
---
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/MiloBrowseEndpointBuilderFactory.java
+++
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/MiloBrowseEndpointBuilderFactory.java
@@ -585,6 +585,40 @@ public interface MiloBrowseEndpointBuilderFactory {
doSetProperty("productUri", productUri);
return this;
}
+ /**
+ * The delay in milliseconds before the client tries again to connect
to
+ * the server after an attempt failed. It is not used while the OPC UA
+ * client recovers a lost session on its own.
+ *
+ * The option is a: <code>long</code> type.
+ *
+ * Default: 10000
+ * Group: client
+ *
+ * @param reconnectTimeout the value to set
+ * @return the dsl builder
+ */
+ default MiloBrowseEndpointBuilder reconnectTimeout(long
reconnectTimeout) {
+ doSetProperty("reconnectTimeout", reconnectTimeout);
+ return this;
+ }
+ /**
+ * The delay in milliseconds before the client tries again to connect
to
+ * the server after an attempt failed. It is not used while the OPC UA
+ * client recovers a lost session on its own.
+ *
+ * The option will be converted to a <code>long</code> type.
+ *
+ * Default: 10000
+ * Group: client
+ *
+ * @param reconnectTimeout the value to set
+ * @return the dsl builder
+ */
+ default MiloBrowseEndpointBuilder reconnectTimeout(String
reconnectTimeout) {
+ doSetProperty("reconnectTimeout", reconnectTimeout);
+ return this;
+ }
/**
* The requested publishing interval in milliseconds.
*
diff --git
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/MiloClientEndpointBuilderFactory.java
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/MiloClientEndpointBuilderFactory.java
index f38a20d4597e..87b75cfe4fc6 100644
---
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/MiloClientEndpointBuilderFactory.java
+++
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/MiloClientEndpointBuilderFactory.java
@@ -656,6 +656,40 @@ public interface MiloClientEndpointBuilderFactory {
doSetProperty("productUri", productUri);
return this;
}
+ /**
+ * The delay in milliseconds before the client tries again to connect
to
+ * the server after an attempt failed. It is not used while the OPC UA
+ * client recovers a lost session on its own.
+ *
+ * The option is a: <code>long</code> type.
+ *
+ * Default: 10000
+ * Group: client
+ *
+ * @param reconnectTimeout the value to set
+ * @return the dsl builder
+ */
+ default MiloClientEndpointConsumerBuilder reconnectTimeout(long
reconnectTimeout) {
+ doSetProperty("reconnectTimeout", reconnectTimeout);
+ return this;
+ }
+ /**
+ * The delay in milliseconds before the client tries again to connect
to
+ * the server after an attempt failed. It is not used while the OPC UA
+ * client recovers a lost session on its own.
+ *
+ * The option will be converted to a <code>long</code> type.
+ *
+ * Default: 10000
+ * Group: client
+ *
+ * @param reconnectTimeout the value to set
+ * @return the dsl builder
+ */
+ default MiloClientEndpointConsumerBuilder reconnectTimeout(String
reconnectTimeout) {
+ doSetProperty("reconnectTimeout", reconnectTimeout);
+ return this;
+ }
/**
* The requested publishing interval in milliseconds.
*
@@ -1622,6 +1656,40 @@ public interface MiloClientEndpointBuilderFactory {
doSetProperty("productUri", productUri);
return this;
}
+ /**
+ * The delay in milliseconds before the client tries again to connect
to
+ * the server after an attempt failed. It is not used while the OPC UA
+ * client recovers a lost session on its own.
+ *
+ * The option is a: <code>long</code> type.
+ *
+ * Default: 10000
+ * Group: client
+ *
+ * @param reconnectTimeout the value to set
+ * @return the dsl builder
+ */
+ default MiloClientEndpointProducerBuilder reconnectTimeout(long
reconnectTimeout) {
+ doSetProperty("reconnectTimeout", reconnectTimeout);
+ return this;
+ }
+ /**
+ * The delay in milliseconds before the client tries again to connect
to
+ * the server after an attempt failed. It is not used while the OPC UA
+ * client recovers a lost session on its own.
+ *
+ * The option will be converted to a <code>long</code> type.
+ *
+ * Default: 10000
+ * Group: client
+ *
+ * @param reconnectTimeout the value to set
+ * @return the dsl builder
+ */
+ default MiloClientEndpointProducerBuilder reconnectTimeout(String
reconnectTimeout) {
+ doSetProperty("reconnectTimeout", reconnectTimeout);
+ return this;
+ }
/**
* The requested publishing interval in milliseconds.
*
@@ -2517,6 +2585,40 @@ public interface MiloClientEndpointBuilderFactory {
doSetProperty("productUri", productUri);
return this;
}
+ /**
+ * The delay in milliseconds before the client tries again to connect
to
+ * the server after an attempt failed. It is not used while the OPC UA
+ * client recovers a lost session on its own.
+ *
+ * The option is a: <code>long</code> type.
+ *
+ * Default: 10000
+ * Group: client
+ *
+ * @param reconnectTimeout the value to set
+ * @return the dsl builder
+ */
+ default MiloClientEndpointBuilder reconnectTimeout(long
reconnectTimeout) {
+ doSetProperty("reconnectTimeout", reconnectTimeout);
+ return this;
+ }
+ /**
+ * The delay in milliseconds before the client tries again to connect
to
+ * the server after an attempt failed. It is not used while the OPC UA
+ * client recovers a lost session on its own.
+ *
+ * The option will be converted to a <code>long</code> type.
+ *
+ * Default: 10000
+ * Group: client
+ *
+ * @param reconnectTimeout the value to set
+ * @return the dsl builder
+ */
+ default MiloClientEndpointBuilder reconnectTimeout(String
reconnectTimeout) {
+ doSetProperty("reconnectTimeout", reconnectTimeout);
+ return this;
+ }
/**
* The requested publishing interval in milliseconds.
*