// spring-boot-auto-configure options: START
:page-partial:
:doctitle: Camel Spring Boot Starter for milo

== Spring Boot Auto-Configuration

When using milo with Spring Boot make sure to use the following Maven dependency to have support for auto configuration:

[source,xml]
----
<dependency>
  <groupId>org.apache.camel.springboot</groupId>
  <artifactId>camel-milo-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>
----


The component supports 46 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *camel.component.milo-client.allowed-security-policies* | A set of allowed security policy URIs. Default is to accept all and use the highest. |  | String
| *camel.component.milo-client.application-name* | The application name | Apache Camel adapter for Eclipse Milo | String
| *camel.component.milo-client.application-uri* | The application URI | http://camel.apache.org/EclipseMilo/Client | String
| *camel.component.milo-client.basic-property-binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | Boolean
| *camel.component.milo-client.bridge-error-handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | Boolean
| *camel.component.milo-client.channel-lifetime* | Channel lifetime in milliseconds |  | Long
| *camel.component.milo-client.client-id* | A virtual client id to force the creation of a new connection instance |  | String
| *camel.component.milo-client.configuration* | All default options for client configurations. The option is a org.apache.camel.component.milo.client.MiloClientConfiguration type. |  | String
| *camel.component.milo-client.discovery-endpoint-suffix* | A suffix for endpoint URI when discovering |  | String
| *camel.component.milo-client.discovery-endpoint-uri* | An alternative discovery URI |  | String
| *camel.component.milo-client.enabled* | Whether to enable auto configuration of the milo-client component. This is enabled by default. |  | Boolean
| *camel.component.milo-client.key-alias* | The name of the key in the keystore file |  | String
| *camel.component.milo-client.key-password* | The key password |  | String
| *camel.component.milo-client.key-store-password* | The keystore password |  | String
| *camel.component.milo-client.key-store-type* | The key store type |  | String
| *camel.component.milo-client.key-store-url* | The URL where the key should be loaded from |  | String
| *camel.component.milo-client.lazy-start-producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | Boolean
| *camel.component.milo-client.max-pending-publish-requests* | The maximum number of pending publish requests |  | Long
| *camel.component.milo-client.max-response-message-size* | The maximum number of bytes a response message may have |  | Long
| *camel.component.milo-client.override-host* | Override the server reported endpoint host with the host from the endpoint URI. | false | Boolean
| *camel.component.milo-client.product-uri* | The product URI | http://camel.apache.org/EclipseMilo | String
| *camel.component.milo-client.request-timeout* | Request timeout in milliseconds |  | Long
| *camel.component.milo-client.requested-publishing-interval* | The requested publishing interval in milliseconds |  | Double
| *camel.component.milo-client.session-name* | Session name |  | String
| *camel.component.milo-client.session-timeout* | Session timeout in milliseconds |  | Long
| *camel.component.milo-server.application-name* | The application name |  | String
| *camel.component.milo-server.application-uri* | The application URI |  | String
| *camel.component.milo-server.basic-property-binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | Boolean
| *camel.component.milo-server.bind-addresses* | Set the addresses of the local addresses the server should bind to |  | String
| *camel.component.milo-server.bridge-error-handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | Boolean
| *camel.component.milo-server.build-info* | Server build info. The option is a org.eclipse.milo.opcua.stack.core.types.structured.BuildInfo type. |  | String
| *camel.component.milo-server.certificate* | Server certificate. The option is a java.security.cert.X509Certificate type. |  | String
| *camel.component.milo-server.certificate-manager* | Server certificate manager. The option is a org.eclipse.milo.opcua.stack.core.security.CertificateManager type. |  | String
| *camel.component.milo-server.certificate-validator* | Validator for client certificates. The option is a org.eclipse.milo.opcua.stack.core.security.CertificateValidator type. |  | String
| *camel.component.milo-server.default-certificate-validator* | Validator for client certificates using default file based approach |  | String
| *camel.component.milo-server.enable-anonymous-authentication* | Enable anonymous authentication, disabled by default | false | Boolean
| *camel.component.milo-server.enabled* | Whether to enable auto configuration of the milo-server component. This is enabled by default. |  | Boolean
| *camel.component.milo-server.lazy-start-producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | Boolean
| *camel.component.milo-server.namespace-uri* | The URI of the namespace, defaults to urn:org:apache:camel |  | String
| *camel.component.milo-server.path* | The path to be appended to the end of the endpoint url. (doesn't need to start with '/') |  | String
| *camel.component.milo-server.port* | The TCP port the server binds to |  | Integer
| *camel.component.milo-server.product-uri* | The product URI |  | String
| *camel.component.milo-server.security-policies* | Security policies |  | Set
| *camel.component.milo-server.security-policies-by-id* | Security policies by URI or name. Multiple policies can be separated by comma. |  | String
| *camel.component.milo-server.user-authentication-credentials* | Set user password combinations in the form of user1:pwd1,user2:pwd2 Usernames and passwords will be URL decoded |  | String
| *camel.component.milo-server.username-security-policy-uri* | Set the UserTokenPolicy used when |  | SecurityPolicy
|===
// spring-boot-auto-configure options: END
