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

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


The camel-cxfrs source connector supports 30 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Priority
| *camel.source.path.beanId* | To lookup an existing configured CxfRsEndpoint. Must used bean: as prefix. | null | ConfigDef.Importance.MEDIUM
| *camel.source.path.address* | The service publish address. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.features* | Set the feature list to the CxfRs endpoint. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.loggingFeatureEnabled* | This option enables CXF Logging Feature which writes inbound and outbound REST messages to log. | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.loggingSizeLimit* | To limit the total size of number of bytes the logger will output when logging feature has been enabled. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.modelRef* | This option is used to specify the model file which is useful for the resource class without annotation. When using this option, then the service class can be omitted, to emulate document-only endpoints | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.providers* | Set custom JAX-RS provider(s) list to the CxfRs endpoint. You can specify a string with a list of providers to lookup in the registy separated by comma. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.resourceClasses* | The resource classes which you want to export as REST service. Multiple classes can be separated by comma. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.schemaLocations* | Sets the locations of the schema(s) which can be used to validate the incoming XML or JAXB-driven JSON. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.skipFaultLogging* | This option controls whether the PhaseInterceptorChain skips logging the Fault that it catches. | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.bindingStyle* | Sets how requests and responses will be mapped to/from Camel. Two values are possible: SimpleConsumer: This binding style processes request parameters, multiparts, etc. and maps them to IN headers, IN attachments and to the message body. It aims to eliminate low-level processing of org.apache.cxf.message.MessageContentsList. It also also adds more flexibility and simplicity to the response mapping. Only available for consumers. Default: The default style. For consumers this passes on a MessageContentsList to the route, requiring low-level processing in the route. This is the traditional binding style, which simply dumps the org.apache.cxf.message.MessageContentsList coming in from the CXF stack onto the IN message body. The user is then responsible for processing it according to the contract defined by the JAX-RS method signature. Custom: allows you to specify a custom binding through the binding option. One of: [SimpleConsumer] [Default] [Custom] | "Default" | 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.publishedEndpointUrl* | This option can override the endpointUrl that published from the WADL which can be accessed with resource address url plus _wadl | null | 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.serviceBeans* | The service beans (the bean ids to lookup in the registry) which you want to export as REST service. Multiple beans can be separated by comma | 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.binding* | To use a custom CxfBinding to control the binding between Camel Message and CXF Message. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.bus* | To use a custom configured CXF Bus. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.continuationTimeout* | This option is used to set the CXF continuation timeout which could be used in CxfConsumer by default when the CXF server is using Jetty or Servlet transport. | 30000L | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.cxfRsConfigurer* | This option could apply the implementation of org.apache.camel.component.cxf.jaxrs.CxfRsEndpointConfigurer which supports to configure the CXF endpoint in programmatic way. User can configure the CXF server and client by implementing configure{Server/Client} method of CxfEndpointConfigurer. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.defaultBus* | Will set the default bus when CXF endpoint create a bus by itself | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.performInvocation* | When the option is true, Camel will perform the invocation of the resource class instance and put the response object into the exchange for further processing. | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.propagateContexts* | When the option is true, JAXRS UriInfo, HttpHeaders, Request and SecurityContext contexts will be available to custom CXFRS processors as typed Camel exchange properties. These contexts can be used to analyze the current requests using JAX-RS API. | 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.cxfrs.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.cxfrs.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.cxfrs.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
| *camel.component.cxfrs.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
|===
// kafka-connector options: END
