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

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


The camel-mybatis-bean sink connector supports 12 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Priority
| *camel.sink.path.beanName* | Name of the bean with the MyBatis annotations. This can either by a type alias or a FQN class name. | null | ConfigDef.Importance.HIGH
| *camel.sink.path.methodName* | Name of the method on the bean that has the SQL query to be executed. | null | ConfigDef.Importance.HIGH
| *camel.sink.endpoint.executorType* | The executor type to be used while executing statements. simple - executor does nothing special. reuse - executor reuses prepared statements. batch - executor reuses statements and batches updates. One of: [SIMPLE] [REUSE] [BATCH] | "SIMPLE" | ConfigDef.Importance.MEDIUM
| *camel.sink.endpoint.inputHeader* | User the header value for input parameters instead of the message body. By default, inputHeader == null and the input parameters are taken from the message body. If outputHeader is set, the value is used and query parameters will be taken from the header instead of the body. | 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.outputHeader* | Store the query result in a header instead of the message body. By default, outputHeader == null and the query result is stored in the message body, any existing content in the message body is discarded. If outputHeader is set, the value is used as the name of the header to store the query result and the original message body is preserved. Setting outputHeader will also omit populating the default CamelMyBatisResult header since it would be the same as outputHeader all the time. | null | 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.mybatis-bean.configurationUri* | Location of MyBatis xml configuration file. The default value is: SqlMapConfig.xml loaded from the classpath | "SqlMapConfig.xml" | ConfigDef.Importance.MEDIUM
| *camel.component.mybatis-bean.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.mybatis-bean.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.mybatis-bean.sqlSessionFactory* | To use the SqlSessionFactory | null | ConfigDef.Importance.MEDIUM
|===
// kafka-connector options: END
