// kafka-connector options: START
[[camel-olingo2-kafka-connector-sink]]
= camel-olingo2-kafka-connector sink configuration

When using camel-olingo2-kafka-connector as sink 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-olingo2-kafka-connector</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel Kafka connector version -->
</dependency>
----


The camel-olingo2 sink connector supports 20 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Priority
| *camel.sink.path.apiName* | What kind of operation to perform One of: [DEFAULT] | null | ConfigDef.Importance.HIGH
| *camel.sink.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.HIGH
| *camel.sink.endpoint.connectTimeout* | HTTP connection creation timeout in milliseconds, defaults to 30,000 (30 seconds) | 30000 | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.contentType* | Content-Type header value can be used to specify JSON or XML message format, defaults to application/json;charset=utf-8 | "application/json;charset=utf-8" | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.filterAlreadySeen* | Set this to true to filter out results that have already been communicated by this component. | false | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.httpAsyncClientBuilder* | Custom HTTP async client builder for more complex HTTP client configuration, overrides connectionTimeout, socketTimeout, proxy and sslContext. Note that a socketTimeout MUST be specified in the builder, otherwise OData requests could block indefinitely | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.httpClientBuilder* | Custom HTTP client builder for more complex HTTP client configuration, overrides connectionTimeout, socketTimeout, proxy and sslContext. Note that a socketTimeout MUST be specified in the builder, otherwise OData requests could block indefinitely | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.httpHeaders* | Custom HTTP headers to inject into every request, this could include OAuth tokens, etc. | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.proxy* | HTTP proxy server configuration | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.serviceUri* | Target OData service base URI, e.g. \http://services.odata.org/OData/OData.svc | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.socketTimeout* | HTTP request timeout in milliseconds, defaults to 30,000 (30 seconds) | 30000 | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.lazyStartProducer* | 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 | ConfigDef.Importance.MEDIUM
| *camel.sink.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.sink.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.olingo2.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
| *camel.component.olingo2.lazyStartProducer* | 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 | ConfigDef.Importance.MEDIUM
| *camel.component.olingo2.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
| *camel.component.olingo2.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
|===
// kafka-connector options: END
