// kafka-connector options: START
[[camel-milo-server-kafka-connector-source]]
= camel-milo-server-kafka-connector source configuration

When using camel-milo-server-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:

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


The camel-milo-server source connector supports 25 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Priority
| *camel.source.path.itemId* | ID of the item | null | ConfigDef.Importance.HIGH
| *camel.source.endpoint.bridgeErrorHandler* | 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 | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.exceptionHandler* | 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. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
| *camel.component.milo-server.applicationName* | The application name | null | ConfigDef.Importance.MEDIUM
| *camel.component.milo-server.applicationUri* | The application URI | null | ConfigDef.Importance.MEDIUM
| *camel.component.milo-server.bindAddresses* | Set the addresses of the local addresses the server should bind to | null | ConfigDef.Importance.MEDIUM
| *camel.component.milo-server.bindPort* | The TCP port the server binds to | null | ConfigDef.Importance.MEDIUM
| *camel.component.milo-server.buildInfo* | Server build info | null | ConfigDef.Importance.MEDIUM
| *camel.component.milo-server.certificateManager* | Server certificate manager | null | ConfigDef.Importance.MEDIUM
| *camel.component.milo-server.certificateValidator* | Validator for client certificates | null | ConfigDef.Importance.MEDIUM
| *camel.component.milo-server.defaultCertificate Validator* | Validator for client certificates using default file based approach | null | ConfigDef.Importance.MEDIUM
| *camel.component.milo-server.enableAnonymous Authentication* | Enable anonymous authentication, disabled by default | false | ConfigDef.Importance.MEDIUM
| *camel.component.milo-server.namespaceUri* | The URI of the namespace, defaults to urn:org:apache:camel | null | ConfigDef.Importance.MEDIUM
| *camel.component.milo-server.path* | The path to be appended to the end of the endpoint url. (doesn't need to start with '/') | null | ConfigDef.Importance.MEDIUM
| *camel.component.milo-server.productUri* | The product URI | null | ConfigDef.Importance.MEDIUM
| *camel.component.milo-server.securityPolicies* | Security policies | null | ConfigDef.Importance.MEDIUM
| *camel.component.milo-server.securityPoliciesById* | Security policies by URI or name | null | ConfigDef.Importance.MEDIUM
| *camel.component.milo-server.serverCertificate* | Server certificate | null | ConfigDef.Importance.MEDIUM
| *camel.component.milo-server.userAuthentication Credentials* | Set user password combinations in the form of user1:pwd1,user2:pwd2 Usernames and passwords will be URL decoded | null | ConfigDef.Importance.MEDIUM
| *camel.component.milo-server.usernameSecurityPolicy Uri* | Set the UserTokenPolicy used when One of: [None] [Basic128Rsa15] [Basic256] [Basic256Sha256] [Aes128_Sha256_RsaOaep] [Aes256_Sha256_RsaPss] | null | ConfigDef.Importance.MEDIUM
| *camel.component.milo-server.bridgeErrorHandler* | 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 | ConfigDef.Importance.MEDIUM
| *camel.component.milo-server.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
|===
// kafka-connector options: END
