// kafka-connector options: START
[[camel-ignite-cache-kafka-connector-source]]
= camel-ignite-cache-kafka-connector source configuration

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


The camel-ignite-cache source connector supports 20 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Priority
| *camel.source.path.cacheName* | The cache name. | null | ConfigDef.Importance.HIGH
| *camel.source.endpoint.propagateIncomingBodyIfNo ReturnValue* | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.treatCollectionsAsCache Objects* | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute, etc. | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.autoUnsubscribe* | Whether auto unsubscribe is enabled in the Continuous Query Consumer. Default value notice: ContinuousQuery.DFLT_AUTO_UNSUBSCRIBE | true | ConfigDef.Importance.MEDIUM
| *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.fireExistingQueryResults* | Whether to process existing results that match the query. Used on initialization of the Continuous Query Consumer. | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.oneExchangePerUpdate* | Whether to pack each update in an individual Exchange, even if multiple updates are received in one batch. Only used by the Continuous Query Consumer. | true | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.pageSize* | The page size. Only used by the Continuous Query Consumer. Default value notice: ContinuousQuery.DFLT_PAGE_SIZE | 1 | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.query* | The Query to execute, only needed for operations that require it, and for the Continuous Query Consumer. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.remoteFilter* | The remote filter, only used by the Continuous Query Consumer. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.timeInterval* | The time interval for the Continuous Query Consumer. Default value notice: ContinuousQuery.DFLT_TIME_INTERVAL | 0L | 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.ignite-cache.configurationResource* | Resource from where to load configuration. | null | ConfigDef.Importance.MEDIUM
| *camel.component.ignite-cache.ignite* | Ignite instance. | null | ConfigDef.Importance.MEDIUM
| *camel.component.ignite-cache.igniteConfiguration* | Ignite configuration. | null | ConfigDef.Importance.MEDIUM
| *camel.component.ignite-cache.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.ignite-cache.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
