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

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


The camel-netty source connector supports 68 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Priority
| *camel.source.path.protocol* | The protocol to use which can be tcp or udp. One of: [tcp] [udp] | null | ConfigDef.Importance.HIGH
| *camel.source.path.host* | The hostname. For the consumer the hostname is localhost or 0.0.0.0. For the producer the hostname is the remote host to connect to | null | ConfigDef.Importance.HIGH
| *camel.source.path.port* | The host port number | null | ConfigDef.Importance.HIGH
| *camel.source.endpoint.disconnect* | Whether or not to disconnect(close) from Netty Channel right after use. Can be used for both consumer and producer. | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.keepAlive* | Setting to ensure socket is not closed due to inactivity | true | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.reuseAddress* | Setting to facilitate socket multiplexing | true | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.reuseChannel* | This option allows producers and consumers (in client mode) to reuse the same Netty Channel for the lifecycle of processing the Exchange. This is useful if you need to call a server multiple times in a Camel route and want to use the same network connection. When using this, the channel is not returned to the connection pool until the Exchange is done; or disconnected if the disconnect option is set to true. The reused Channel is stored on the Exchange as an exchange property with the key NettyConstants#NETTY_CHANNEL which allows you to obtain the channel during routing and use it as well. | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.sync* | Setting to set endpoint as one-way or request-response | true | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.tcpNoDelay* | Setting to improve TCP protocol performance | 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.broadcast* | Setting to choose Multicast over UDP | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.clientMode* | If the clientMode is true, netty consumer will connect the address as a TCP client. | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.reconnect* | Used only in clientMode in consumer, the consumer will attempt to reconnect on disconnection if this is enabled | true | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.reconnectInterval* | Used if reconnect and clientMode is enabled. The interval in milli seconds to attempt reconnection | 10000 | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.backlog* | Allows to configure a backlog for netty consumer (server). Note the backlog is just a best effort depending on the OS. Setting this option to a value such as 200, 500 or 1000, tells the TCP stack how long the accept queue can be If this option is not configured, then the backlog depends on OS setting. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.bossCount* | When netty works on nio mode, it uses default bossCount parameter from Netty, which is 1. User can use this option to override the default bossCount from Netty | 1 | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.bossGroup* | Set the BossGroup which could be used for handling the new connection of the server side across the NettyEndpoint | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.disconnectOnNoReply* | If sync is enabled then this option dictates NettyConsumer if it should disconnect where there is no reply to send back. | true | 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.nettyServerBootstrapFactory* | To use a custom NettyServerBootstrapFactory | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.networkInterface* | When using UDP then this option can be used to specify a network interface by its name, such as eth0 to join a multicast group. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.noReplyLogLevel* | If sync is enabled this option dictates NettyConsumer which logging level to use when logging a there is no reply to send back. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.serverClosedChannelException CaughtLogLevel* | If the server (NettyConsumer) catches an java.nio.channels.ClosedChannelException then its logged using this logging level. This is used to avoid logging the closed channel exceptions, as clients can disconnect abruptly and then cause a flood of closed exceptions in the Netty server. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.serverExceptionCaughtLog Level* | If the server (NettyConsumer) catches an exception then its logged using this logging level. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.serverInitializerFactory* | To use a custom ServerInitializerFactory | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.usingExecutorService* | Whether to use ordered thread pool, to ensure events are processed orderly on the same channel. | true | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.allowSerializedHeaders* | Only used for TCP when transferExchange is true. When set to true, serializable objects in headers and properties will be added to the exchange. Otherwise Camel will exclude any non-serializable objects and log it at WARN level. | false | 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.channelGroup* | To use a explicit ChannelGroup. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.nativeTransport* | Whether to use native transport instead of NIO. Native transport takes advantage of the host operating system and is only supported on some platforms. You need to add the netty JAR for the host operating system you are using. See more details at: \http://netty.io/wiki/native-transports.html | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.options* | Allows to configure additional netty options using option. as prefix. For example option.child.keepAlive=false to set the netty option child.keepAlive=false. See the Netty documentation for possible options that can be used. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.receiveBufferSize* | The TCP/UDP buffer sizes to be used during inbound communication. Size is bytes. | 65536 | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.receiveBufferSizePredictor* | Configures the buffer size predictor. See details at Jetty documentation and this mail thread. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.sendBufferSize* | The TCP/UDP buffer sizes to be used during outbound communication. Size is bytes. | 65536 | 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.source.endpoint.transferExchange* | Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.udpByteArrayCodec* | For UDP only. If enabled the using byte array codec instead of Java serialization protocol. | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.workerCount* | When netty works on nio mode, it uses default workerCount parameter from Netty (which is cpu_core_threads x 2). User can use this option to override the default workerCount from Netty. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.workerGroup* | To use a explicit EventLoopGroup as the boss thread pool. For example to share a thread pool with multiple consumers or producers. By default each consumer or producer has their own worker pool with 2 x cpu count core threads. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.allowDefaultCodec* | The netty component installs a default codec if both, encoder/decoder is null and textline is false. Setting allowDefaultCodec to false prevents the netty component from installing a default codec as the first element in the filter chain. | true | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.autoAppendDelimiter* | Whether or not to auto append missing end delimiter when sending using the textline codec. | true | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.decoderMaxLineLength* | The max line length to use for the textline codec. | 1024 | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.decoders* | A list of decoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.delimiter* | The delimiter to use for the textline codec. Possible values are LINE and NULL. One of: [LINE] [NULL] | "LINE" | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.encoders* | A list of encoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.encoding* | The encoding (a charset name) to use for the textline codec. If not provided, Camel will use the JVM default Charset. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.textline* | Only used for TCP. If no codec is specified, you can use this flag to indicate a text line based codec; if not specified or the value is false, then Object Serialization is assumed over TCP - however only Strings are allowed to be serialized by default. | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.enabledProtocols* | Which protocols to enable when using SSL | "TLSv1,TLSv1.1,TLSv1.2" | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.keyStoreFile* | Client side certificate keystore to be used for encryption | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.keyStoreFormat* | Keystore format to be used for payload encryption. Defaults to JKS if not set | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.keyStoreResource* | Client side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.needClientAuth* | Configures whether the server needs client authentication when using SSL. | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.passphrase* | Password setting to use in order to encrypt/decrypt payloads sent using SSH | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.securityProvider* | Security provider to be used for payload encryption. Defaults to SunX509 if not set. | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.ssl* | Setting to specify whether SSL encryption is applied to this endpoint | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.sslClientCertHeaders* | When enabled and in SSL mode, then the Netty consumer will enrich the Camel Message with headers having information about the client certificate such as subject name, issuer name, serial number, and the valid date range. | false | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.sslHandler* | Reference to a class that could be used to return an SSL Handler | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.trustStoreFile* | Server side certificate keystore to be used for encryption | null | ConfigDef.Importance.MEDIUM
| *camel.source.endpoint.trustStoreResource* | Server side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems. | null | ConfigDef.Importance.MEDIUM
| *camel.component.netty.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.netty.executorService* | To use the given EventExecutorGroup. | null | ConfigDef.Importance.MEDIUM
| *camel.component.netty.maximumPoolSize* | Sets a maximum thread pool size for the netty consumer ordered thread pool. The default size is 2 x cpu_core plus 1. Setting this value to eg 10 will then use 10 threads unless 2 x cpu_core plus 1 is a higher value, which then will override and be used. For example if there are 8 cores, then the consumer thread pool will be 17. This thread pool is used to route messages received from Netty by Camel. We use a separate thread pool to ensure ordering of messages and also in case some messages will block, then nettys worker threads (event loop) wont be affected. | null | ConfigDef.Importance.MEDIUM
| *camel.component.netty.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.netty.configuration* | To use the NettyConfiguration as configuration when creating endpoints. | null | ConfigDef.Importance.MEDIUM
| *camel.component.netty.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
| *camel.component.netty.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
|===
// kafka-connector options: END
