[[milo-server-component]]
= OPC UA Server Component
//THIS FILE IS COPIED: EDIT THE SOURCE FILE:
:page-source: components/camel-milo/src/main/docs/milo-server-component.adoc
:docTitle: OPC UA Server
:artifactId: camel-milo
:description: Make telemetry data available as an OPC UA server.
:since: 2.19
:supportLevel: Stable
:component-header: Both producer and consumer are supported

*Since Camel {since}*

*{component-header}*

The Milo Server component provides an OPC UA server using the
http://eclipse.org/milo[Eclipse Milo™] implementation.

*Java 9+*: This component requires Java 9+ at runtime.

Maven users will need to add the following dependency to their `pom.xml`
for this component:

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

Messages sent to the endpoint from Camel will be available from the OPC UA server to OPC UA Clients.
Value write requests from OPC UA Client will trigger messages which are sent into Apache Camel.


// component options: START
The OPC UA Server component supports 20 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *applicationName* (common) | The application name |  | String
| *applicationUri* (common) | The application URI |  | String
| *bindAddresses* (common) | Set the addresses of the local addresses the server should bind to |  | String
| *buildInfo* (common) | Server build info |  | BuildInfo
| *namespaceUri* (common) | The URI of the namespace, defaults to urn:org:apache:camel | urn:org:apache:camel | String
| *path* (common) | The path to be appended to the end of the endpoint url. (doesn't need to start with '/') |  | String
| *port* (common) | The TCP port the server binds to |  | int
| *productUri* (common) | The product URI |  | String
| *bridgeErrorHandler* (consumer) | 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
| *lazyStartProducer* (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
| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
| *certificate* (security) | Server certificate |  | X509Certificate
| *certificateManager* (security) | Server certificate manager |  | CertificateManager
| *certificateValidator* (security) | Validator for client certificates |  | CertificateValidator
| *defaultCertificateValidator* (security) | Validator for client certificates using default file based approach |  | String
| *enableAnonymousAuthentication* (security) | Enable anonymous authentication, disabled by default | false | boolean
| *securityPolicies* (security) | Security policies |  | Set
| *securityPoliciesById* (security) | Security policies by URI or name. Multiple policies can be separated by comma. |  | String
| *userAuthenticationCredentials* (security) | Set user password combinations in the form of user1:pwd1,user2:pwd2 Usernames and passwords will be URL decoded |  | String
| *usernameSecurityPolicyUri* (security) | Set the UserTokenPolicy used when. The value can be one of: None, Basic128Rsa15, Basic256, Basic256Sha256, Aes128_Sha256_RsaOaep, Aes256_Sha256_RsaPss |  | SecurityPolicy
|===
// component options: END









== URI format

[source,java]
------------------------
milo-server:itemId[?options]
------------------------

== URI options



// endpoint options: START
The OPC UA Server endpoint is configured using URI syntax:

----
milo-server:itemId
----

with the following path and query parameters:

=== Path Parameters (1 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *itemId* | *Required* ID of the item |  | String
|===


=== Query Parameters (6 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *bridgeErrorHandler* (consumer) | 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
| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. The value can be one of: InOnly, InOut, InOptionalOut |  | ExchangePattern
| *lazyStartProducer* (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
| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
|===
// endpoint options: END



include::camel-spring-boot::page$milo-starter.adoc[]
