diff --git a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components.properties b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components.properties
index ba01aaf..288ef75 100644
--- a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components.properties
+++ b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components.properties
@@ -333,6 +333,7 @@
 velocity
 vertx
 vertx-http
+vertx-kafka
 vertx-websocket
 vm
 weather
diff --git a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/vertx-kafka.json b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/vertx-kafka.json
new file mode 100644
index 0000000..2bd022d
--- /dev/null
+++ b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/vertx-kafka.json
@@ -0,0 +1,224 @@
+{
+  "component": {
+    "kind": "component",
+    "name": "vertx-kafka",
+    "title": "Vert.x Kafka",
+    "description": "Sent and receive messages to\/from an Apache Kafka broker using vert.x Kafka client",
+    "deprecated": false,
+    "firstVersion": "3.7.0",
+    "label": "messaging",
+    "javaType": "org.apache.camel.component.vertx.kafka.VertxKafkaComponent",
+    "supportLevel": "Preview",
+    "groupId": "org.apache.camel.springboot",
+    "artifactId": "camel-vertx-kafka-starter",
+    "version": "3.7.0-SNAPSHOT",
+    "scheme": "vertx-kafka",
+    "extendsScheme": "",
+    "syntax": "vertx-kafka:topic",
+    "async": false,
+    "api": false,
+    "consumerOnly": false,
+    "producerOnly": false,
+    "lenientProperties": false
+  },
+  "componentProperties": {
+    "additionalProperties": { "kind": "property", "displayName": "Additional Properties", "group": "common", "label": "common", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "additionalProperties.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Sets additional properties for either kafka consumer or kafka producer in case they can't be set directly on the camel configurations (e.g: new Kafka properties that are not reflected yet in Camel configurations), the properties have to be prefixed with additionalProperties.. E.g: additionalProperties.transactional.id=12345&additionalProperties.schema.registry.url=http:\/\/localhost:8811\/avro" },
+    "bootstrapServers": { "kind": "property", "displayName": "Bootstrap Servers", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "A list of host\/port pairs to use for establishing the initial connection to the Kafka cluster. The client will make use of all servers irrespective of which servers are specified here for bootstrapping&mdash;this list only impacts the initial hosts used to discover the full set of servers. This list should be in the form host1:port1,host2:port2,.... Since these servers are just used for the initial connection to discover the full cluster membership (which may change dynamically), this list need not contain the full set of servers (you may want more than one, though, in case a server is down)." },
+    "clientDnsLookup": { "kind": "property", "displayName": "Client Dns Lookup", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "default", "use_all_dns_ips", "resolve_canonical_bootstrap_servers_only" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "use_all_dns_ips", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Controls how the client uses DNS lookups. If set to use_all_dns_ips, connect to each returned IP address in sequence until a successful connection is established. After a disconnection, the next IP is used. Once all IPs have been used once, the client resolves the IP(s) from the hostname again (both the JVM and the OS cache DNS name lookups, however). If set to resolve_canonical_bootstrap_servers_only, resolve each bootstrap address into a list of canonical names. After the bootstrap phase, this behaves the same as use_all_dns_ips. If set to default (deprecated), attempt to connect to the first IP address returned by the lookup, even if the lookup returns multiple IP addresses." },
+    "clientId": { "kind": "property", "displayName": "Client Id", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "An id string to pass to the server when making requests. The purpose of this is to be able to track the source of requests beyond just ip\/port by allowing a logical application name to be included in server-side request logging." },
+    "configuration": { "kind": "property", "displayName": "Configuration", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "The component configurations" },
+    "connectionsMaxIdleMs": { "kind": "property", "displayName": "Connections Max Idle Ms", "group": "common", "label": "common", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "9m", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Close idle connections after the number of milliseconds specified by this config." },
+    "headerFilterStrategy": { "kind": "property", "displayName": "Header Filter Strategy", "group": "common", "label": "common", "required": false, "type": "object", "javaType": "org.apache.camel.spi.HeaderFilterStrategy", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "To use a custom HeaderFilterStrategy to filter header to and from Camel message." },
+    "interceptorClasses": { "kind": "property", "displayName": "Interceptor Classes", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "A list of classes to use as interceptors. Implementing the org.apache.kafka.clients.producer.ProducerInterceptor interface allows you to intercept (and possibly mutate) the records received by the producer before they are published to the Kafka cluster. By default, there are no interceptors." },
+    "metadataMaxAgeMs": { "kind": "property", "displayName": "Metadata Max Age Ms", "group": "common", "label": "common", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5m", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The period of time in milliseconds after which we force a refresh of metadata even if we haven't seen any partition leadership changes to proactively discover any new brokers or partitions." },
+    "metricReporters": { "kind": "property", "displayName": "Metric Reporters", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "A list of classes to use as metrics reporters. Implementing the org.apache.kafka.common.metrics.MetricsReporter interface allows plugging in classes that will be notified of new metric creation. The JmxReporter is always included to register JMX statistics." },
+    "metricsNumSamples": { "kind": "property", "displayName": "Metrics Num Samples", "group": "common", "label": "common", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 2, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The number of samples maintained to compute metrics." },
+    "metricsRecordingLevel": { "kind": "property", "displayName": "Metrics Recording Level", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "INFO", "DEBUG" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "INFO", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The highest recording level for metrics." },
+    "metricsSampleWindowMs": { "kind": "property", "displayName": "Metrics Sample Window Ms", "group": "common", "label": "common", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "30s", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The window of time a metrics sample is computed over." },
+    "partitionId": { "kind": "property", "displayName": "Partition Id", "group": "common", "label": "common", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The partition to which the record will be sent (or null if no partition was specified) or read from a particular partition if set. Header VertxKafkaConstants#PARTITION_ID If configured, it will take precedence over this config" },
+    "receiveBufferBytes": { "kind": "property", "displayName": "Receive Buffer Bytes", "group": "common", "label": "common", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 32768, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The size of the TCP receive buffer (SO_RCVBUF) to use when reading data. If the value is -1, the OS default will be used." },
+    "reconnectBackoffMaxMs": { "kind": "property", "displayName": "Reconnect Backoff Max Ms", "group": "common", "label": "common", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1s", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The maximum amount of time in milliseconds to wait when reconnecting to a broker that has repeatedly failed to connect. If provided, the backoff per host will increase exponentially for each consecutive connection failure, up to this maximum. After calculating the backoff increase, 20% random jitter is added to avoid connection storms." },
+    "reconnectBackoffMs": { "kind": "property", "displayName": "Reconnect Backoff Ms", "group": "common", "label": "common", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "50ms", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The base amount of time to wait before attempting to reconnect to a given host. This avoids repeatedly connecting to a host in a tight loop. This backoff applies to all connection attempts by the client to a broker." },
+    "requestTimeoutMs": { "kind": "property", "displayName": "Request Timeout Ms", "group": "common", "label": "common", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "30s", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The configuration controls the maximum amount of time the client will wait for the response of a request. If the response is not received before the timeout elapses the client will resend the request if necessary or fail the request if retries are exhausted. This should be larger than replica.lag.time.max.ms (a broker configuration) to reduce the possibility of message duplication due to unnecessary producer retries." },
+    "retryBackoffMs": { "kind": "property", "displayName": "Retry Backoff Ms", "group": "common", "label": "common", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "100ms", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The amount of time to wait before attempting to retry a failed request to a given topic partition. This avoids repeatedly sending requests in a tight loop under some failure scenarios." },
+    "sendBufferBytes": { "kind": "property", "displayName": "Send Buffer Bytes", "group": "common", "label": "common", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 131072, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The size of the TCP send buffer (SO_SNDBUF) to use when sending data. If the value is -1, the OS default will be used." },
+    "allowAutoCreateTopics": { "kind": "property", "displayName": "Allow Auto Create Topics", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Allow automatic topic creation on the broker when subscribing to or assigning a topic. A topic being subscribed to will be automatically created only if the broker allows for it using auto.create.topics.enable broker configuration. This configuration must be set to false when using brokers older than 0.11.0" },
+    "autoCommitIntervalMs": { "kind": "property", "displayName": "Auto Commit Interval Ms", "group": "consumer", "label": "consumer", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5s", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The frequency in milliseconds that the consumer offsets are auto-committed to Kafka if enable.auto.commit is set to true." },
+    "autoOffsetReset": { "kind": "property", "displayName": "Auto Offset Reset", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "latest", "earliest", "none" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "latest", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "What to do when there is no initial offset in Kafka or if the current offset does not exist any more on the server (e.g. because that data has been deleted): earliest: automatically reset the offset to the earliest offsetlatest: automatically reset the offset to the latest offsetnone: throw exception to the consumer if no previous offset is found for the consumer's groupanything else: throw exception to the consumer." },
+    "bridgeErrorHandler": { "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "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." },
+    "checkCrcs": { "kind": "property", "displayName": "Check Crcs", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Automatically check the CRC32 of the records consumed. This ensures no on-the-wire or on-disk corruption to the messages occurred. This check adds some overhead, so it may be disabled in cases seeking extreme performance." },
+    "clientRack": { "kind": "property", "displayName": "Client Rack", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "A rack identifier for this client. This can be any string value which indicates where this client is physically located. It corresponds with the broker config 'broker.rack'" },
+    "defaultApiTimeoutMs": { "kind": "property", "displayName": "Default Api Timeout Ms", "group": "consumer", "label": "consumer", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1m", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Specifies the timeout (in milliseconds) for client APIs. This configuration is used as the default timeout for all client operations that do not specify a timeout parameter." },
+    "enableAutoCommit": { "kind": "property", "displayName": "Enable Auto Commit", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "If true the consumer's offset will be periodically committed in the background." },
+    "excludeInternalTopics": { "kind": "property", "displayName": "Exclude Internal Topics", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Whether internal topics matching a subscribed pattern should be excluded from the subscription. It is always possible to explicitly subscribe to an internal topic." },
+    "fetchMaxBytes": { "kind": "property", "displayName": "Fetch Max Bytes", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 52428800, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The maximum amount of data the server should return for a fetch request. Records are fetched in batches by the consumer, and if the first record batch in the first non-empty partition of the fetch is larger than this value, the record batch will still be returned to ensure that the consumer can make progress. As such, this is not a absolute maximum. The maximum record batch size accepted by the broker is defined via message.max.bytes (broker config) or max.message.bytes (topic config). Note that the consumer performs multiple fetches in parallel." },
+    "fetchMaxWaitMs": { "kind": "property", "displayName": "Fetch Max Wait Ms", "group": "consumer", "label": "consumer", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "500ms", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The maximum amount of time the server will block before answering the fetch request if there isn't sufficient data to immediately satisfy the requirement given by fetch.min.bytes." },
+    "fetchMinBytes": { "kind": "property", "displayName": "Fetch Min Bytes", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The minimum amount of data the server should return for a fetch request. If insufficient data is available the request will wait for that much data to accumulate before answering the request. The default setting of 1 byte means that fetch requests are answered as soon as a single byte of data is available or the fetch request times out waiting for data to arrive. Setting this to something greater than 1 will cause the server to wait for larger amounts of data to accumulate which can improve server throughput a bit at the cost of some additional latency." },
+    "groupId": { "kind": "property", "displayName": "Group Id", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "A unique string that identifies the consumer group this consumer belongs to. This property is required if the consumer uses either the group management functionality by using subscribe(topic) or the Kafka-based offset management strategy." },
+    "groupInstanceId": { "kind": "property", "displayName": "Group Instance Id", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "A unique identifier of the consumer instance provided by the end user. Only non-empty strings are permitted. If set, the consumer is treated as a static member, which means that only one instance with this ID is allowed in the consumer group at any time. This can be used in combination with a larger session timeout to avoid group rebalances caused by transient unavailability (e.g. process restarts). If not set, the consumer will join the group as a dynamic member, which is the traditional behavior." },
+    "heartbeatIntervalMs": { "kind": "property", "displayName": "Heartbeat Interval Ms", "group": "consumer", "label": "consumer", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "3s", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The expected time between heartbeats to the consumer coordinator when using Kafka's group management facilities. Heartbeats are used to ensure that the consumer's session stays active and to facilitate rebalancing when new consumers join or leave the group. The value must be set lower than session.timeout.ms, but typically should be set no higher than 1\/3 of that value. It can be adjusted even lower to control the expected time for normal rebalances." },
+    "isolationLevel": { "kind": "property", "displayName": "Isolation Level", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "read_committed", "read_uncommitted" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "read_uncommitted", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Controls how to read messages written transactionally. If set to read_committed, consumer.poll() will only return transactional messages which have been committed. If set to read_uncommitted' (the default), consumer.poll() will return all messages, even transactional messages which have been aborted. Non-transactional messages will be returned unconditionally in either mode. Messages will always be returned in offset order. Hence, in read_committed mode, consumer.poll() will only return messages up to the last stable offset (LSO), which is the one less than the offset of the first open transaction. In particular any messages appearing after messages belonging to ongoing transactions will be withheld until the relevant transaction has been completed. As a result, read_committed consumers will not be able to read up to the high watermark when there are in flight transactions. Further, when in read_committed the seekToEnd method will return the LSO" },
+    "keyDeserializer": { "kind": "property", "displayName": "Key Deserializer", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "org.apache.kafka.common.serialization.StringDeserializer", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Deserializer class for key that implements the org.apache.kafka.common.serialization.Deserializer interface." },
+    "maxPartitionFetchBytes": { "kind": "property", "displayName": "Max Partition Fetch Bytes", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1048576, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The maximum amount of data per-partition the server will return. Records are fetched in batches by the consumer. If the first record batch in the first non-empty partition of the fetch is larger than this limit, the batch will still be returned to ensure that the consumer can make progress. The maximum record batch size accepted by the broker is defined via message.max.bytes (broker config) or max.message.bytes (topic config). See fetch.max.bytes for limiting the consumer request size." },
+    "maxPollIntervalMs": { "kind": "property", "displayName": "Max Poll Interval Ms", "group": "consumer", "label": "consumer", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5m", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The maximum delay between invocations of poll() when using consumer group management. This places an upper bound on the amount of time that the consumer can be idle before fetching more records. If poll() is not called before expiration of this timeout, then the consumer is considered failed and the group will rebalance in order to reassign the partitions to another member. For consumers using a non-null group.instance.id which reach this timeout, partitions will not be immediately reassigned. Instead, the consumer will stop sending heartbeats and partitions will be reassigned after expiration of session.timeout.ms. This mirrors the behavior of a static consumer which has shutdown." },
+    "maxPollRecords": { "kind": "property", "displayName": "Max Poll Records", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 500, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The maximum number of records returned in a single call to poll()." },
+    "partitionAssignmentStrategy": { "kind": "property", "displayName": "Partition Assignment Strategy", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "org.apache.kafka.clients.consumer.RangeAssignor", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "A list of class names or class types, ordered by preference, of supported partition assignment strategies that the client will use to distribute partition ownership amongst consumer instances when group management is used.In addition to the default class specified below, you can use the org.apache.kafka.clients.consumer.RoundRobinAssignorclass for round robin assignments of partitions to consumers. Implementing the org.apache.kafka.clients.consumer.ConsumerPartitionAssignor interface allows you to plug in a custom assignmentstrategy." },
+    "seekToOffset": { "kind": "property", "displayName": "Seek To Offset", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Set if KafkaConsumer will read from a particular offset on startup. This config will take precedence over seekTo config" },
+    "seekToPosition": { "kind": "property", "displayName": "Seek To Position", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "beginning", "end" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Set if KafkaConsumer will read from beginning or end on startup: beginning : read from beginning end : read from end." },
+    "sessionTimeoutMs": { "kind": "property", "displayName": "Session Timeout Ms", "group": "consumer", "label": "consumer", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "10s", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The timeout used to detect client failures when using Kafka's group management facility. The client sends periodic heartbeats to indicate its liveness to the broker. If no heartbeats are received by the broker before the expiration of this session timeout, then the broker will remove this client from the group and initiate a rebalance. Note that the value must be in the allowable range as configured in the broker configuration by group.min.session.timeout.ms and group.max.session.timeout.ms." },
+    "valueDeserializer": { "kind": "property", "displayName": "Value Deserializer", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "org.apache.kafka.common.serialization.StringDeserializer", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Deserializer class for value that implements the org.apache.kafka.common.serialization.Deserializer interface." },
+    "acks": { "kind": "property", "displayName": "Acks", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "all", "-1", "0", "1" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The number of acknowledgments the producer requires the leader to have received before considering a request complete. This controls the durability of records that are sent. The following settings are allowed: acks=0 If set to zero then the producer will not wait for any acknowledgment from the server at all. The record will be immediately added to the socket buffer and considered sent. No guarantee can be made that the server has received the record in this case, and the retries configuration will not take effect (as the client won't generally know of any failures). The offset given back for each record will always be set to -1. acks=1 This will mean the leader will write the record to its local log but will respond without awaiting full acknowledgement from all followers. In this case should the leader fail immediately after acknowledging the record but before the followers have replicated it then the record will be lost. acks=all This means the leader will wait for the full set of in-sync replicas to acknowledge the record. This guarantees that the record will not be lost as long as at least one in-sync replica remains alive. This is the strongest available guarantee. This is equivalent to the acks=-1 setting." },
+    "batchSize": { "kind": "property", "displayName": "Batch Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 16384, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The producer will attempt to batch records together into fewer requests whenever multiple records are being sent to the same partition. This helps performance on both the client and the server. This configuration controls the default batch size in bytes. No attempt will be made to batch records larger than this size. Requests sent to brokers will contain multiple batches, one for each partition with data available to be sent. A small batch size will make batching less common and may reduce throughput (a batch size of zero will disable batching entirely). A very large batch size may use memory a bit more wastefully as we will always allocate a buffer of the specified batch size in anticipation of additional records." },
+    "bufferMemory": { "kind": "property", "displayName": "Buffer Memory", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 33554432, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The total bytes of memory the producer can use to buffer records waiting to be sent to the server. If records are sent faster than they can be delivered to the server the producer will block for max.block.ms after which it will throw an exception.This setting should correspond roughly to the total memory the producer will use, but is not a hard bound since not all memory the producer uses is used for buffering. Some additional memory will be used for compression (if compression is enabled) as well as for maintaining in-flight requests." },
+    "compressionType": { "kind": "property", "displayName": "Compression Type", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "none", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The compression type for all data generated by the producer. The default is none (i.e. no compression). Valid values are none, gzip, snappy, lz4, or zstd. Compression is of full batches of data, so the efficacy of batching will also impact the compression ratio (more batching means better compression)." },
+    "deliveryTimeoutMs": { "kind": "property", "displayName": "Delivery Timeout Ms", "group": "producer", "label": "producer", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "2m", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "An upper bound on the time to report success or failure after a call to send() returns. This limits the total time that a record will be delayed prior to sending, the time to await acknowledgement from the broker (if expected), and the time allowed for retriable send failures. The producer may report failure to send a record earlier than this config if either an unrecoverable error is encountered, the retries have been exhausted, or the record is added to a batch which reached an earlier delivery expiration deadline. The value of this config should be greater than or equal to the sum of request.timeout.ms and linger.ms." },
+    "enableIdempotence": { "kind": "property", "displayName": "Enable Idempotence", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "When set to 'true', the producer will ensure that exactly one copy of each message is written in the stream. If 'false', producer retries due to broker failures, etc., may write duplicates of the retried message in the stream. Note that enabling idempotence requires max.in.flight.requests.per.connection to be less than or equal to 5, retries to be greater than 0 and acks must be 'all'. If these values are not explicitly set by the user, suitable values will be chosen. If incompatible values are set, a ConfigException will be thrown." },
+    "keySerializer": { "kind": "property", "displayName": "Key Serializer", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "org.apache.kafka.common.serialization.StringSerializer", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Serializer class for key that implements the org.apache.kafka.common.serialization.Serializer interface." },
+    "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "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." },
+    "lingerMs": { "kind": "property", "displayName": "Linger Ms", "group": "producer", "label": "producer", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "0ms", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The producer groups together any records that arrive in between request transmissions into a single batched request. Normally this occurs only under load when records arrive faster than they can be sent out. However in some circumstances the client may want to reduce the number of requests even under moderate load. This setting accomplishes this by adding a small amount of artificial delay&mdash;that is, rather than immediately sending out a record the producer will wait for up to the given delay to allow other records to be sent so that the sends can be batched together. This can be thought of as analogous to Nagle's algorithm in TCP. This setting gives the upper bound on the delay for batching: once we get batch.size worth of records for a partition it will be sent immediately regardless of this setting, however if we have fewer than this many bytes accumulated for this partition we will 'linger' for the specified time waiting for more records to show up. This setting defaults to 0 (i.e. no delay). Setting linger.ms=5, for example, would have the effect of reducing the number of requests sent but would add up to 5ms of latency to records sent in the absence of load." },
+    "maxBlockMs": { "kind": "property", "displayName": "Max Block Ms", "group": "producer", "label": "producer", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1m", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The configuration controls how long KafkaProducer.send() and KafkaProducer.partitionsFor() will block.These methods can be blocked either because the buffer is full or metadata unavailable.Blocking in the user-supplied serializers or partitioner will not be counted against this timeout." },
+    "maxInFlightRequestsPerConnection": { "kind": "property", "displayName": "Max In Flight Requests Per Connection", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 5, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The maximum number of unacknowledged requests the client will send on a single connection before blocking. Note that if this setting is set to be greater than 1 and there are failed sends, there is a risk of message re-ordering due to retries (i.e., if retries are enabled)." },
+    "maxRequestSize": { "kind": "property", "displayName": "Max Request Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1048576, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The maximum size of a request in bytes. This setting will limit the number of record batches the producer will send in a single request to avoid sending huge requests. This is also effectively a cap on the maximum uncompressed record batch size. Note that the server has its own cap on the record batch size (after compression if compression is enabled) which may be different from this." },
+    "metadataMaxIdleMs": { "kind": "property", "displayName": "Metadata Max Idle Ms", "group": "producer", "label": "producer", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5m", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Controls how long the producer will cache metadata for a topic that's idle. If the elapsed time since a topic was last produced to exceeds the metadata idle duration, then the topic's metadata is forgotten and the next access to it will force a metadata fetch request." },
+    "partitionerClass": { "kind": "property", "displayName": "Partitioner Class", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "org.apache.kafka.clients.producer.internals.DefaultPartitioner", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Partitioner class that implements the org.apache.kafka.clients.producer.Partitioner interface." },
+    "retries": { "kind": "property", "displayName": "Retries", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 2147483647, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Setting a value greater than zero will cause the client to resend any record whose send fails with a potentially transient error. Note that this retry is no different than if the client resent the record upon receiving the error. Allowing retries without setting max.in.flight.requests.per.connection to 1 will potentially change the ordering of records because if two batches are sent to a single partition, and the first fails and is retried but the second succeeds, then the records in the second batch may appear first. Note additionally that produce requests will be failed before the number of retries has been exhausted if the timeout configured by delivery.timeout.ms expires first before successful acknowledgement. Users should generally prefer to leave this config unset and instead use delivery.timeout.ms to control retry behavior." },
+    "transactionalId": { "kind": "property", "displayName": "Transactional Id", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The TransactionalId to use for transactional delivery. This enables reliability semantics which span multiple producer sessions since it allows the client to guarantee that transactions using the same TransactionalId have been completed prior to starting any new transactions. If no TransactionalId is provided, then the producer is limited to idempotent delivery. If a TransactionalId is configured, enable.idempotence is implied. By default the TransactionId is not configured, which means transactions cannot be used. Note that, by default, transactions require a cluster of at least three brokers which is the recommended setting for production; for development you can change this, by adjusting broker setting transaction.state.log.replication.factor." },
+    "transactionTimeoutMs": { "kind": "property", "displayName": "Transaction Timeout Ms", "group": "producer", "label": "producer", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1m", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The maximum amount of time in ms that the transaction coordinator will wait for a transaction status update from the producer before proactively aborting the ongoing transaction.If this value is larger than the transaction.max.timeout.ms setting in the broker, the request will fail with a InvalidTransactionTimeout error." },
+    "valueSerializer": { "kind": "property", "displayName": "Value Serializer", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "org.apache.kafka.common.serialization.StringSerializer", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Serializer class for value that implements the org.apache.kafka.common.serialization.Serializer interface." },
+    "autowiredEnabled": { "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." },
+    "vertx": { "kind": "property", "displayName": "Vertx", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "io.vertx.core.Vertx", "deprecated": false, "autowired": true, "secret": false, "description": "To use an existing vertx instead of creating a new instance" },
+    "vertxOptions": { "kind": "property", "displayName": "Vertx Options", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "io.vertx.core.VertxOptions", "deprecated": false, "autowired": false, "secret": false, "description": "To provide a custom set of vertx options for configuring vertx" },
+    "saslClientCallbackHandlerClass": { "kind": "property", "displayName": "Sasl Client Callback Handler Class", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The fully qualified name of a SASL client callback handler class that implements the AuthenticateCallbackHandler interface." },
+    "saslJaasConfig": { "kind": "property", "displayName": "Sasl Jaas Config", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "JAAS login context parameters for SASL connections in the format used by JAAS configuration files. JAAS configuration file format is described here. The format for the value is: 'loginModuleClass controlFlag (optionName=optionValue);'. For brokers, the config must be prefixed with listener prefix and SASL mechanism name in lower-case. For example, listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=com.example.ScramLoginModule required;" },
+    "saslKerberosKinitCmd": { "kind": "property", "displayName": "Sasl Kerberos Kinit Cmd", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "\/usr\/bin\/kinit", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Kerberos kinit command path." },
+    "saslKerberosMinTimeBeforeRelogin": { "kind": "property", "displayName": "Sasl Kerberos Min Time Before Relogin", "group": "security", "label": "common,security", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 60000, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Login thread sleep time between refresh attempts." },
+    "saslKerberosServiceName": { "kind": "property", "displayName": "Sasl Kerberos Service Name", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The Kerberos principal name that Kafka runs as. This can be defined either in Kafka's JAAS config or in Kafka's config." },
+    "saslKerberosTicketRenewJitter": { "kind": "property", "displayName": "Sasl Kerberos Ticket Renew Jitter", "group": "security", "label": "common,security", "required": false, "type": "number", "javaType": "double", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0.05, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Percentage of random jitter added to the renewal time." },
+    "saslKerberosTicketRenewWindowFactor": { "kind": "property", "displayName": "Sasl Kerberos Ticket Renew Window Factor", "group": "security", "label": "common,security", "required": false, "type": "number", "javaType": "double", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0.8, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Login thread will sleep until the specified window factor of time from last refresh to ticket's expiry has been reached, at which time it will try to renew the ticket." },
+    "saslLoginCallbackHandlerClass": { "kind": "property", "displayName": "Sasl Login Callback Handler Class", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The fully qualified name of a SASL login callback handler class that implements the AuthenticateCallbackHandler interface. For brokers, login callback handler config must be prefixed with listener prefix and SASL mechanism name in lower-case. For example, listener.name.sasl_ssl.scram-sha-256.sasl.login.callback.handler.class=com.example.CustomScramLoginCallbackHandler" },
+    "saslLoginClass": { "kind": "property", "displayName": "Sasl Login Class", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The fully qualified name of a class that implements the Login interface. For brokers, login config must be prefixed with listener prefix and SASL mechanism name in lower-case. For example, listener.name.sasl_ssl.scram-sha-256.sasl.login.class=com.example.CustomScramLogin" },
+    "saslLoginRefreshBufferSeconds": { "kind": "property", "displayName": "Sasl Login Refresh Buffer Seconds", "group": "security", "label": "common,security", "required": false, "type": "integer", "javaType": "short", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "300", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The amount of buffer time before credential expiration to maintain when refreshing a credential, in seconds. If a refresh would otherwise occur closer to expiration than the number of buffer seconds then the refresh will be moved up to maintain as much of the buffer time as possible. Legal values are between 0 and 3600 (1 hour); a default value of 300 (5 minutes) is used if no value is specified. This value and sasl.login.refresh.min.period.seconds are both ignored if their sum exceeds the remaining lifetime of a credential. Currently applies only to OAUTHBEARER." },
+    "saslLoginRefreshMinPeriodSeconds": { "kind": "property", "displayName": "Sasl Login Refresh Min Period Seconds", "group": "security", "label": "common,security", "required": false, "type": "integer", "javaType": "short", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "60", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The desired minimum time for the login refresh thread to wait before refreshing a credential, in seconds. Legal values are between 0 and 900 (15 minutes); a default value of 60 (1 minute) is used if no value is specified. This value and sasl.login.refresh.buffer.seconds are both ignored if their sum exceeds the remaining lifetime of a credential. Currently applies only to OAUTHBEARER." },
+    "saslLoginRefreshWindowFactor": { "kind": "property", "displayName": "Sasl Login Refresh Window Factor", "group": "security", "label": "common,security", "required": false, "type": "number", "javaType": "double", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0.8, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Login refresh thread will sleep until the specified window factor relative to the credential's lifetime has been reached, at which time it will try to refresh the credential. Legal values are between 0.5 (50%) and 1.0 (100%) inclusive; a default value of 0.8 (80%) is used if no value is specified. Currently applies only to OAUTHBEARER." },
+    "saslLoginRefreshWindowJitter": { "kind": "property", "displayName": "Sasl Login Refresh Window Jitter", "group": "security", "label": "common,security", "required": false, "type": "number", "javaType": "double", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0.05, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The maximum amount of random jitter relative to the credential's lifetime that is added to the login refresh thread's sleep time. Legal values are between 0 and 0.25 (25%) inclusive; a default value of 0.05 (5%) is used if no value is specified. Currently applies only to OAUTHBEARER." },
+    "saslMechanism": { "kind": "property", "displayName": "Sasl Mechanism", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "GSSAPI", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "SASL mechanism used for client connections. This may be any mechanism for which a security provider is available. GSSAPI is the default mechanism." },
+    "securityProtocol": { "kind": "property", "displayName": "Security Protocol", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "PLAINTEXT", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Protocol used to communicate with brokers. Valid values are: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL." },
+    "securityProviders": { "kind": "property", "displayName": "Security Providers", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "A list of configurable creator classes each returning a provider implementing security algorithms. These classes should implement the org.apache.kafka.common.security.auth.SecurityProviderCreator interface." },
+    "sslCipherSuites": { "kind": "property", "displayName": "Ssl Cipher Suites", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "A list of cipher suites. This is a named combination of authentication, encryption, MAC and key exchange algorithm used to negotiate the security settings for a network connection using TLS or SSL network protocol. By default all the available cipher suites are supported." },
+    "sslEnabledProtocols": { "kind": "property", "displayName": "Ssl Enabled Protocols", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "TLSv1.2,TLSv1.3", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The list of protocols enabled for SSL connections. The default is 'TLSv1.2,TLSv1.3' when running with Java 11 or newer, 'TLSv1.2' otherwise. With the default value for Java 11, clients and servers will prefer TLSv1.3 if both support it and fallback to TLSv1.2 otherwise (assuming both support at least TLSv1.2). This default should be fine for most cases. Also see the config documentation for ssl.protocol." },
+    "sslEndpointIdentificationAlgorithm": { "kind": "property", "displayName": "Ssl Endpoint Identification Algorithm", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "https", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The endpoint identification algorithm to validate server hostname using server certificate." },
+    "sslEngineFactoryClass": { "kind": "property", "displayName": "Ssl Engine Factory Class", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The class of type org.apache.kafka.common.security.auth.SslEngineFactory to provide SSLEngine objects. Default value is org.apache.kafka.common.security.ssl.DefaultSslEngineFactory" },
+    "sslKeymanagerAlgorithm": { "kind": "property", "displayName": "Ssl Keymanager Algorithm", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "SunX509", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The algorithm used by key manager factory for SSL connections. Default value is the key manager factory algorithm configured for the Java Virtual Machine." },
+    "sslKeyPassword": { "kind": "property", "displayName": "Ssl Key Password", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The password of the private key in the key store file. This is optional for client." },
+    "sslKeystoreLocation": { "kind": "property", "displayName": "Ssl Keystore Location", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The location of the key store file. This is optional for client and can be used for two-way authentication for client." },
+    "sslKeystorePassword": { "kind": "property", "displayName": "Ssl Keystore Password", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The store password for the key store file. This is optional for client and only needed if ssl.keystore.location is configured." },
+    "sslKeystoreType": { "kind": "property", "displayName": "Ssl Keystore Type", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "JKS", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The file format of the key store file. This is optional for client." },
+    "sslProtocol": { "kind": "property", "displayName": "Ssl Protocol", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "TLSv1.3", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The SSL protocol used to generate the SSLContext. The default is 'TLSv1.3' when running with Java 11 or newer, 'TLSv1.2' otherwise. This value should be fine for most use cases. Allowed values in recent JVMs are 'TLSv1.2' and 'TLSv1.3'. 'TLS', 'TLSv1.1', 'SSL', 'SSLv2' and 'SSLv3' may be supported in older JVMs, but their usage is discouraged due to known security vulnerabilities. With the default value for this config and 'ssl.enabled.protocols', clients will downgrade to 'TLSv1.2' if the server does not support 'TLSv1.3'. If this config is set to 'TLSv1.2', clients will not use 'TLSv1.3' even if it is one of the values in ssl.enabled.protocols and the server only supports 'TLSv1.3'." },
+    "sslProvider": { "kind": "property", "displayName": "Ssl Provider", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The name of the security provider used for SSL connections. Default value is the default security provider of the JVM." },
+    "sslSecureRandomImplementation": { "kind": "property", "displayName": "Ssl Secure Random Implementation", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The SecureRandom PRNG implementation to use for SSL cryptography operations." },
+    "sslTrustmanagerAlgorithm": { "kind": "property", "displayName": "Ssl Trustmanager Algorithm", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "PKIX", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The algorithm used by trust manager factory for SSL connections. Default value is the trust manager factory algorithm configured for the Java Virtual Machine." },
+    "sslTruststoreLocation": { "kind": "property", "displayName": "Ssl Truststore Location", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The location of the trust store file." },
+    "sslTruststorePassword": { "kind": "property", "displayName": "Ssl Truststore Password", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The password for the trust store file. If a password is not set access to the truststore is still available, but integrity checking is disabled." },
+    "sslTruststoreType": { "kind": "property", "displayName": "Ssl Truststore Type", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "JKS", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The file format of the trust store file." }
+  },
+  "properties": {
+    "topic": { "kind": "path", "displayName": "Topic", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Name of the topic to use. On the consumer you can use comma to separate multiple topics. A producer can only send a message to a single topic." },
+    "additionalProperties": { "kind": "parameter", "displayName": "Additional Properties", "group": "common", "label": "common", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "additionalProperties.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Sets additional properties for either kafka consumer or kafka producer in case they can't be set directly on the camel configurations (e.g: new Kafka properties that are not reflected yet in Camel configurations), the properties have to be prefixed with additionalProperties.. E.g: additionalProperties.transactional.id=12345&additionalProperties.schema.registry.url=http:\/\/localhost:8811\/avro" },
+    "bootstrapServers": { "kind": "parameter", "displayName": "Bootstrap Servers", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "A list of host\/port pairs to use for establishing the initial connection to the Kafka cluster. The client will make use of all servers irrespective of which servers are specified here for bootstrapping&mdash;this list only impacts the initial hosts used to discover the full set of servers. This list should be in the form host1:port1,host2:port2,.... Since these servers are just used for the initial connection to discover the full cluster membership (which may change dynamically), this list need not contain the full set of servers (you may want more than one, though, in case a server is down)." },
+    "clientDnsLookup": { "kind": "parameter", "displayName": "Client Dns Lookup", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "default", "use_all_dns_ips", "resolve_canonical_bootstrap_servers_only" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "use_all_dns_ips", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Controls how the client uses DNS lookups. If set to use_all_dns_ips, connect to each returned IP address in sequence until a successful connection is established. After a disconnection, the next IP is used. Once all IPs have been used once, the client resolves the IP(s) from the hostname again (both the JVM and the OS cache DNS name lookups, however). If set to resolve_canonical_bootstrap_servers_only, resolve each bootstrap address into a list of canonical names. After the bootstrap phase, this behaves the same as use_all_dns_ips. If set to default (deprecated), attempt to connect to the first IP address returned by the lookup, even if the lookup returns multiple IP addresses." },
+    "clientId": { "kind": "parameter", "displayName": "Client Id", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "An id string to pass to the server when making requests. The purpose of this is to be able to track the source of requests beyond just ip\/port by allowing a logical application name to be included in server-side request logging." },
+    "connectionsMaxIdleMs": { "kind": "parameter", "displayName": "Connections Max Idle Ms", "group": "common", "label": "common", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "9m", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Close idle connections after the number of milliseconds specified by this config." },
+    "headerFilterStrategy": { "kind": "parameter", "displayName": "Header Filter Strategy", "group": "common", "label": "common", "required": false, "type": "object", "javaType": "org.apache.camel.spi.HeaderFilterStrategy", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "To use a custom HeaderFilterStrategy to filter header to and from Camel message." },
+    "interceptorClasses": { "kind": "parameter", "displayName": "Interceptor Classes", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "A list of classes to use as interceptors. Implementing the org.apache.kafka.clients.producer.ProducerInterceptor interface allows you to intercept (and possibly mutate) the records received by the producer before they are published to the Kafka cluster. By default, there are no interceptors." },
+    "metadataMaxAgeMs": { "kind": "parameter", "displayName": "Metadata Max Age Ms", "group": "common", "label": "common", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5m", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The period of time in milliseconds after which we force a refresh of metadata even if we haven't seen any partition leadership changes to proactively discover any new brokers or partitions." },
+    "metricReporters": { "kind": "parameter", "displayName": "Metric Reporters", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "A list of classes to use as metrics reporters. Implementing the org.apache.kafka.common.metrics.MetricsReporter interface allows plugging in classes that will be notified of new metric creation. The JmxReporter is always included to register JMX statistics." },
+    "metricsNumSamples": { "kind": "parameter", "displayName": "Metrics Num Samples", "group": "common", "label": "common", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 2, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The number of samples maintained to compute metrics." },
+    "metricsRecordingLevel": { "kind": "parameter", "displayName": "Metrics Recording Level", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "INFO", "DEBUG" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "INFO", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The highest recording level for metrics." },
+    "metricsSampleWindowMs": { "kind": "parameter", "displayName": "Metrics Sample Window Ms", "group": "common", "label": "common", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "30s", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The window of time a metrics sample is computed over." },
+    "partitionId": { "kind": "parameter", "displayName": "Partition Id", "group": "common", "label": "common", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The partition to which the record will be sent (or null if no partition was specified) or read from a particular partition if set. Header VertxKafkaConstants#PARTITION_ID If configured, it will take precedence over this config" },
+    "receiveBufferBytes": { "kind": "parameter", "displayName": "Receive Buffer Bytes", "group": "common", "label": "common", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 32768, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The size of the TCP receive buffer (SO_RCVBUF) to use when reading data. If the value is -1, the OS default will be used." },
+    "reconnectBackoffMaxMs": { "kind": "parameter", "displayName": "Reconnect Backoff Max Ms", "group": "common", "label": "common", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1s", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The maximum amount of time in milliseconds to wait when reconnecting to a broker that has repeatedly failed to connect. If provided, the backoff per host will increase exponentially for each consecutive connection failure, up to this maximum. After calculating the backoff increase, 20% random jitter is added to avoid connection storms." },
+    "reconnectBackoffMs": { "kind": "parameter", "displayName": "Reconnect Backoff Ms", "group": "common", "label": "common", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "50ms", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The base amount of time to wait before attempting to reconnect to a given host. This avoids repeatedly connecting to a host in a tight loop. This backoff applies to all connection attempts by the client to a broker." },
+    "requestTimeoutMs": { "kind": "parameter", "displayName": "Request Timeout Ms", "group": "common", "label": "common", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "30s", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The configuration controls the maximum amount of time the client will wait for the response of a request. If the response is not received before the timeout elapses the client will resend the request if necessary or fail the request if retries are exhausted. This should be larger than replica.lag.time.max.ms (a broker configuration) to reduce the possibility of message duplication due to unnecessary producer retries." },
+    "retryBackoffMs": { "kind": "parameter", "displayName": "Retry Backoff Ms", "group": "common", "label": "common", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "100ms", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The amount of time to wait before attempting to retry a failed request to a given topic partition. This avoids repeatedly sending requests in a tight loop under some failure scenarios." },
+    "sendBufferBytes": { "kind": "parameter", "displayName": "Send Buffer Bytes", "group": "common", "label": "common", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 131072, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The size of the TCP send buffer (SO_SNDBUF) to use when sending data. If the value is -1, the OS default will be used." },
+    "allowAutoCreateTopics": { "kind": "parameter", "displayName": "Allow Auto Create Topics", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Allow automatic topic creation on the broker when subscribing to or assigning a topic. A topic being subscribed to will be automatically created only if the broker allows for it using auto.create.topics.enable broker configuration. This configuration must be set to false when using brokers older than 0.11.0" },
+    "autoCommitIntervalMs": { "kind": "parameter", "displayName": "Auto Commit Interval Ms", "group": "consumer", "label": "consumer", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5s", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The frequency in milliseconds that the consumer offsets are auto-committed to Kafka if enable.auto.commit is set to true." },
+    "autoOffsetReset": { "kind": "parameter", "displayName": "Auto Offset Reset", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "latest", "earliest", "none" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "latest", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "What to do when there is no initial offset in Kafka or if the current offset does not exist any more on the server (e.g. because that data has been deleted): earliest: automatically reset the offset to the earliest offsetlatest: automatically reset the offset to the latest offsetnone: throw exception to the consumer if no previous offset is found for the consumer's groupanything else: throw exception to the consumer." },
+    "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "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." },
+    "checkCrcs": { "kind": "parameter", "displayName": "Check Crcs", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Automatically check the CRC32 of the records consumed. This ensures no on-the-wire or on-disk corruption to the messages occurred. This check adds some overhead, so it may be disabled in cases seeking extreme performance." },
+    "clientRack": { "kind": "parameter", "displayName": "Client Rack", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "A rack identifier for this client. This can be any string value which indicates where this client is physically located. It corresponds with the broker config 'broker.rack'" },
+    "defaultApiTimeoutMs": { "kind": "parameter", "displayName": "Default Api Timeout Ms", "group": "consumer", "label": "consumer", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1m", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Specifies the timeout (in milliseconds) for client APIs. This configuration is used as the default timeout for all client operations that do not specify a timeout parameter." },
+    "enableAutoCommit": { "kind": "parameter", "displayName": "Enable Auto Commit", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "If true the consumer's offset will be periodically committed in the background." },
+    "excludeInternalTopics": { "kind": "parameter", "displayName": "Exclude Internal Topics", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Whether internal topics matching a subscribed pattern should be excluded from the subscription. It is always possible to explicitly subscribe to an internal topic." },
+    "fetchMaxBytes": { "kind": "parameter", "displayName": "Fetch Max Bytes", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 52428800, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The maximum amount of data the server should return for a fetch request. Records are fetched in batches by the consumer, and if the first record batch in the first non-empty partition of the fetch is larger than this value, the record batch will still be returned to ensure that the consumer can make progress. As such, this is not a absolute maximum. The maximum record batch size accepted by the broker is defined via message.max.bytes (broker config) or max.message.bytes (topic config). Note that the consumer performs multiple fetches in parallel." },
+    "fetchMaxWaitMs": { "kind": "parameter", "displayName": "Fetch Max Wait Ms", "group": "consumer", "label": "consumer", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "500ms", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The maximum amount of time the server will block before answering the fetch request if there isn't sufficient data to immediately satisfy the requirement given by fetch.min.bytes." },
+    "fetchMinBytes": { "kind": "parameter", "displayName": "Fetch Min Bytes", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The minimum amount of data the server should return for a fetch request. If insufficient data is available the request will wait for that much data to accumulate before answering the request. The default setting of 1 byte means that fetch requests are answered as soon as a single byte of data is available or the fetch request times out waiting for data to arrive. Setting this to something greater than 1 will cause the server to wait for larger amounts of data to accumulate which can improve server throughput a bit at the cost of some additional latency." },
+    "groupId": { "kind": "parameter", "displayName": "Group Id", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "A unique string that identifies the consumer group this consumer belongs to. This property is required if the consumer uses either the group management functionality by using subscribe(topic) or the Kafka-based offset management strategy." },
+    "groupInstanceId": { "kind": "parameter", "displayName": "Group Instance Id", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "A unique identifier of the consumer instance provided by the end user. Only non-empty strings are permitted. If set, the consumer is treated as a static member, which means that only one instance with this ID is allowed in the consumer group at any time. This can be used in combination with a larger session timeout to avoid group rebalances caused by transient unavailability (e.g. process restarts). If not set, the consumer will join the group as a dynamic member, which is the traditional behavior." },
+    "heartbeatIntervalMs": { "kind": "parameter", "displayName": "Heartbeat Interval Ms", "group": "consumer", "label": "consumer", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "3s", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The expected time between heartbeats to the consumer coordinator when using Kafka's group management facilities. Heartbeats are used to ensure that the consumer's session stays active and to facilitate rebalancing when new consumers join or leave the group. The value must be set lower than session.timeout.ms, but typically should be set no higher than 1\/3 of that value. It can be adjusted even lower to control the expected time for normal rebalances." },
+    "isolationLevel": { "kind": "parameter", "displayName": "Isolation Level", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "read_committed", "read_uncommitted" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "read_uncommitted", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Controls how to read messages written transactionally. If set to read_committed, consumer.poll() will only return transactional messages which have been committed. If set to read_uncommitted' (the default), consumer.poll() will return all messages, even transactional messages which have been aborted. Non-transactional messages will be returned unconditionally in either mode. Messages will always be returned in offset order. Hence, in read_committed mode, consumer.poll() will only return messages up to the last stable offset (LSO), which is the one less than the offset of the first open transaction. In particular any messages appearing after messages belonging to ongoing transactions will be withheld until the relevant transaction has been completed. As a result, read_committed consumers will not be able to read up to the high watermark when there are in flight transactions. Further, when in read_committed the seekToEnd method will return the LSO" },
+    "keyDeserializer": { "kind": "parameter", "displayName": "Key Deserializer", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "org.apache.kafka.common.serialization.StringDeserializer", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Deserializer class for key that implements the org.apache.kafka.common.serialization.Deserializer interface." },
+    "maxPartitionFetchBytes": { "kind": "parameter", "displayName": "Max Partition Fetch Bytes", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1048576, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The maximum amount of data per-partition the server will return. Records are fetched in batches by the consumer. If the first record batch in the first non-empty partition of the fetch is larger than this limit, the batch will still be returned to ensure that the consumer can make progress. The maximum record batch size accepted by the broker is defined via message.max.bytes (broker config) or max.message.bytes (topic config). See fetch.max.bytes for limiting the consumer request size." },
+    "maxPollIntervalMs": { "kind": "parameter", "displayName": "Max Poll Interval Ms", "group": "consumer", "label": "consumer", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5m", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The maximum delay between invocations of poll() when using consumer group management. This places an upper bound on the amount of time that the consumer can be idle before fetching more records. If poll() is not called before expiration of this timeout, then the consumer is considered failed and the group will rebalance in order to reassign the partitions to another member. For consumers using a non-null group.instance.id which reach this timeout, partitions will not be immediately reassigned. Instead, the consumer will stop sending heartbeats and partitions will be reassigned after expiration of session.timeout.ms. This mirrors the behavior of a static consumer which has shutdown." },
+    "maxPollRecords": { "kind": "parameter", "displayName": "Max Poll Records", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 500, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The maximum number of records returned in a single call to poll()." },
+    "partitionAssignmentStrategy": { "kind": "parameter", "displayName": "Partition Assignment Strategy", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "org.apache.kafka.clients.consumer.RangeAssignor", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "A list of class names or class types, ordered by preference, of supported partition assignment strategies that the client will use to distribute partition ownership amongst consumer instances when group management is used.In addition to the default class specified below, you can use the org.apache.kafka.clients.consumer.RoundRobinAssignorclass for round robin assignments of partitions to consumers. Implementing the org.apache.kafka.clients.consumer.ConsumerPartitionAssignor interface allows you to plug in a custom assignmentstrategy." },
+    "seekToOffset": { "kind": "parameter", "displayName": "Seek To Offset", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Set if KafkaConsumer will read from a particular offset on startup. This config will take precedence over seekTo config" },
+    "seekToPosition": { "kind": "parameter", "displayName": "Seek To Position", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "beginning", "end" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Set if KafkaConsumer will read from beginning or end on startup: beginning : read from beginning end : read from end." },
+    "sessionTimeoutMs": { "kind": "parameter", "displayName": "Session Timeout Ms", "group": "consumer", "label": "consumer", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "10s", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The timeout used to detect client failures when using Kafka's group management facility. The client sends periodic heartbeats to indicate its liveness to the broker. If no heartbeats are received by the broker before the expiration of this session timeout, then the broker will remove this client from the group and initiate a rebalance. Note that the value must be in the allowable range as configured in the broker configuration by group.min.session.timeout.ms and group.max.session.timeout.ms." },
+    "valueDeserializer": { "kind": "parameter", "displayName": "Value Deserializer", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "org.apache.kafka.common.serialization.StringDeserializer", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Deserializer class for value that implements the org.apache.kafka.common.serialization.Deserializer interface." },
+    "exceptionHandler": { "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "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." },
+    "exchangePattern": { "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut", "InOptionalOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
+    "acks": { "kind": "parameter", "displayName": "Acks", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "all", "-1", "0", "1" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The number of acknowledgments the producer requires the leader to have received before considering a request complete. This controls the durability of records that are sent. The following settings are allowed: acks=0 If set to zero then the producer will not wait for any acknowledgment from the server at all. The record will be immediately added to the socket buffer and considered sent. No guarantee can be made that the server has received the record in this case, and the retries configuration will not take effect (as the client won't generally know of any failures). The offset given back for each record will always be set to -1. acks=1 This will mean the leader will write the record to its local log but will respond without awaiting full acknowledgement from all followers. In this case should the leader fail immediately after acknowledging the record but before the followers have replicated it then the record will be lost. acks=all This means the leader will wait for the full set of in-sync replicas to acknowledge the record. This guarantees that the record will not be lost as long as at least one in-sync replica remains alive. This is the strongest available guarantee. This is equivalent to the acks=-1 setting." },
+    "batchSize": { "kind": "parameter", "displayName": "Batch Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 16384, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The producer will attempt to batch records together into fewer requests whenever multiple records are being sent to the same partition. This helps performance on both the client and the server. This configuration controls the default batch size in bytes. No attempt will be made to batch records larger than this size. Requests sent to brokers will contain multiple batches, one for each partition with data available to be sent. A small batch size will make batching less common and may reduce throughput (a batch size of zero will disable batching entirely). A very large batch size may use memory a bit more wastefully as we will always allocate a buffer of the specified batch size in anticipation of additional records." },
+    "bufferMemory": { "kind": "parameter", "displayName": "Buffer Memory", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 33554432, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The total bytes of memory the producer can use to buffer records waiting to be sent to the server. If records are sent faster than they can be delivered to the server the producer will block for max.block.ms after which it will throw an exception.This setting should correspond roughly to the total memory the producer will use, but is not a hard bound since not all memory the producer uses is used for buffering. Some additional memory will be used for compression (if compression is enabled) as well as for maintaining in-flight requests." },
+    "compressionType": { "kind": "parameter", "displayName": "Compression Type", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "none", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The compression type for all data generated by the producer. The default is none (i.e. no compression). Valid values are none, gzip, snappy, lz4, or zstd. Compression is of full batches of data, so the efficacy of batching will also impact the compression ratio (more batching means better compression)." },
+    "deliveryTimeoutMs": { "kind": "parameter", "displayName": "Delivery Timeout Ms", "group": "producer", "label": "producer", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "2m", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "An upper bound on the time to report success or failure after a call to send() returns. This limits the total time that a record will be delayed prior to sending, the time to await acknowledgement from the broker (if expected), and the time allowed for retriable send failures. The producer may report failure to send a record earlier than this config if either an unrecoverable error is encountered, the retries have been exhausted, or the record is added to a batch which reached an earlier delivery expiration deadline. The value of this config should be greater than or equal to the sum of request.timeout.ms and linger.ms." },
+    "enableIdempotence": { "kind": "parameter", "displayName": "Enable Idempotence", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "When set to 'true', the producer will ensure that exactly one copy of each message is written in the stream. If 'false', producer retries due to broker failures, etc., may write duplicates of the retried message in the stream. Note that enabling idempotence requires max.in.flight.requests.per.connection to be less than or equal to 5, retries to be greater than 0 and acks must be 'all'. If these values are not explicitly set by the user, suitable values will be chosen. If incompatible values are set, a ConfigException will be thrown." },
+    "keySerializer": { "kind": "parameter", "displayName": "Key Serializer", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "org.apache.kafka.common.serialization.StringSerializer", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Serializer class for key that implements the org.apache.kafka.common.serialization.Serializer interface." },
+    "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "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." },
+    "lingerMs": { "kind": "parameter", "displayName": "Linger Ms", "group": "producer", "label": "producer", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "0ms", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The producer groups together any records that arrive in between request transmissions into a single batched request. Normally this occurs only under load when records arrive faster than they can be sent out. However in some circumstances the client may want to reduce the number of requests even under moderate load. This setting accomplishes this by adding a small amount of artificial delay&mdash;that is, rather than immediately sending out a record the producer will wait for up to the given delay to allow other records to be sent so that the sends can be batched together. This can be thought of as analogous to Nagle's algorithm in TCP. This setting gives the upper bound on the delay for batching: once we get batch.size worth of records for a partition it will be sent immediately regardless of this setting, however if we have fewer than this many bytes accumulated for this partition we will 'linger' for the specified time waiting for more records to show up. This setting defaults to 0 (i.e. no delay). Setting linger.ms=5, for example, would have the effect of reducing the number of requests sent but would add up to 5ms of latency to records sent in the absence of load." },
+    "maxBlockMs": { "kind": "parameter", "displayName": "Max Block Ms", "group": "producer", "label": "producer", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1m", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The configuration controls how long KafkaProducer.send() and KafkaProducer.partitionsFor() will block.These methods can be blocked either because the buffer is full or metadata unavailable.Blocking in the user-supplied serializers or partitioner will not be counted against this timeout." },
+    "maxInFlightRequestsPerConnection": { "kind": "parameter", "displayName": "Max In Flight Requests Per Connection", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 5, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The maximum number of unacknowledged requests the client will send on a single connection before blocking. Note that if this setting is set to be greater than 1 and there are failed sends, there is a risk of message re-ordering due to retries (i.e., if retries are enabled)." },
+    "maxRequestSize": { "kind": "parameter", "displayName": "Max Request Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1048576, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The maximum size of a request in bytes. This setting will limit the number of record batches the producer will send in a single request to avoid sending huge requests. This is also effectively a cap on the maximum uncompressed record batch size. Note that the server has its own cap on the record batch size (after compression if compression is enabled) which may be different from this." },
+    "metadataMaxIdleMs": { "kind": "parameter", "displayName": "Metadata Max Idle Ms", "group": "producer", "label": "producer", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5m", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Controls how long the producer will cache metadata for a topic that's idle. If the elapsed time since a topic was last produced to exceeds the metadata idle duration, then the topic's metadata is forgotten and the next access to it will force a metadata fetch request." },
+    "partitionerClass": { "kind": "parameter", "displayName": "Partitioner Class", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "org.apache.kafka.clients.producer.internals.DefaultPartitioner", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Partitioner class that implements the org.apache.kafka.clients.producer.Partitioner interface." },
+    "retries": { "kind": "parameter", "displayName": "Retries", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 2147483647, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Setting a value greater than zero will cause the client to resend any record whose send fails with a potentially transient error. Note that this retry is no different than if the client resent the record upon receiving the error. Allowing retries without setting max.in.flight.requests.per.connection to 1 will potentially change the ordering of records because if two batches are sent to a single partition, and the first fails and is retried but the second succeeds, then the records in the second batch may appear first. Note additionally that produce requests will be failed before the number of retries has been exhausted if the timeout configured by delivery.timeout.ms expires first before successful acknowledgement. Users should generally prefer to leave this config unset and instead use delivery.timeout.ms to control retry behavior." },
+    "transactionalId": { "kind": "parameter", "displayName": "Transactional Id", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The TransactionalId to use for transactional delivery. This enables reliability semantics which span multiple producer sessions since it allows the client to guarantee that transactions using the same TransactionalId have been completed prior to starting any new transactions. If no TransactionalId is provided, then the producer is limited to idempotent delivery. If a TransactionalId is configured, enable.idempotence is implied. By default the TransactionId is not configured, which means transactions cannot be used. Note that, by default, transactions require a cluster of at least three brokers which is the recommended setting for production; for development you can change this, by adjusting broker setting transaction.state.log.replication.factor." },
+    "transactionTimeoutMs": { "kind": "parameter", "displayName": "Transaction Timeout Ms", "group": "producer", "label": "producer", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1m", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The maximum amount of time in ms that the transaction coordinator will wait for a transaction status update from the producer before proactively aborting the ongoing transaction.If this value is larger than the transaction.max.timeout.ms setting in the broker, the request will fail with a InvalidTransactionTimeout error." },
+    "valueSerializer": { "kind": "parameter", "displayName": "Value Serializer", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "org.apache.kafka.common.serialization.StringSerializer", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Serializer class for value that implements the org.apache.kafka.common.serialization.Serializer interface." },
+    "synchronous": { "kind": "parameter", "displayName": "Synchronous", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported)." },
+    "saslClientCallbackHandlerClass": { "kind": "parameter", "displayName": "Sasl Client Callback Handler Class", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The fully qualified name of a SASL client callback handler class that implements the AuthenticateCallbackHandler interface." },
+    "saslJaasConfig": { "kind": "parameter", "displayName": "Sasl Jaas Config", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "JAAS login context parameters for SASL connections in the format used by JAAS configuration files. JAAS configuration file format is described here. The format for the value is: 'loginModuleClass controlFlag (optionName=optionValue);'. For brokers, the config must be prefixed with listener prefix and SASL mechanism name in lower-case. For example, listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=com.example.ScramLoginModule required;" },
+    "saslKerberosKinitCmd": { "kind": "parameter", "displayName": "Sasl Kerberos Kinit Cmd", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "\/usr\/bin\/kinit", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Kerberos kinit command path." },
+    "saslKerberosMinTimeBeforeRelogin": { "kind": "parameter", "displayName": "Sasl Kerberos Min Time Before Relogin", "group": "security", "label": "common,security", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 60000, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Login thread sleep time between refresh attempts." },
+    "saslKerberosServiceName": { "kind": "parameter", "displayName": "Sasl Kerberos Service Name", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The Kerberos principal name that Kafka runs as. This can be defined either in Kafka's JAAS config or in Kafka's config." },
+    "saslKerberosTicketRenewJitter": { "kind": "parameter", "displayName": "Sasl Kerberos Ticket Renew Jitter", "group": "security", "label": "common,security", "required": false, "type": "number", "javaType": "double", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0.05, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Percentage of random jitter added to the renewal time." },
+    "saslKerberosTicketRenewWindowFactor": { "kind": "parameter", "displayName": "Sasl Kerberos Ticket Renew Window Factor", "group": "security", "label": "common,security", "required": false, "type": "number", "javaType": "double", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0.8, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Login thread will sleep until the specified window factor of time from last refresh to ticket's expiry has been reached, at which time it will try to renew the ticket." },
+    "saslLoginCallbackHandlerClass": { "kind": "parameter", "displayName": "Sasl Login Callback Handler Class", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The fully qualified name of a SASL login callback handler class that implements the AuthenticateCallbackHandler interface. For brokers, login callback handler config must be prefixed with listener prefix and SASL mechanism name in lower-case. For example, listener.name.sasl_ssl.scram-sha-256.sasl.login.callback.handler.class=com.example.CustomScramLoginCallbackHandler" },
+    "saslLoginClass": { "kind": "parameter", "displayName": "Sasl Login Class", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The fully qualified name of a class that implements the Login interface. For brokers, login config must be prefixed with listener prefix and SASL mechanism name in lower-case. For example, listener.name.sasl_ssl.scram-sha-256.sasl.login.class=com.example.CustomScramLogin" },
+    "saslLoginRefreshBufferSeconds": { "kind": "parameter", "displayName": "Sasl Login Refresh Buffer Seconds", "group": "security", "label": "common,security", "required": false, "type": "integer", "javaType": "short", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "300", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The amount of buffer time before credential expiration to maintain when refreshing a credential, in seconds. If a refresh would otherwise occur closer to expiration than the number of buffer seconds then the refresh will be moved up to maintain as much of the buffer time as possible. Legal values are between 0 and 3600 (1 hour); a default value of 300 (5 minutes) is used if no value is specified. This value and sasl.login.refresh.min.period.seconds are both ignored if their sum exceeds the remaining lifetime of a credential. Currently applies only to OAUTHBEARER." },
+    "saslLoginRefreshMinPeriodSeconds": { "kind": "parameter", "displayName": "Sasl Login Refresh Min Period Seconds", "group": "security", "label": "common,security", "required": false, "type": "integer", "javaType": "short", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "60", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The desired minimum time for the login refresh thread to wait before refreshing a credential, in seconds. Legal values are between 0 and 900 (15 minutes); a default value of 60 (1 minute) is used if no value is specified. This value and sasl.login.refresh.buffer.seconds are both ignored if their sum exceeds the remaining lifetime of a credential. Currently applies only to OAUTHBEARER." },
+    "saslLoginRefreshWindowFactor": { "kind": "parameter", "displayName": "Sasl Login Refresh Window Factor", "group": "security", "label": "common,security", "required": false, "type": "number", "javaType": "double", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0.8, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Login refresh thread will sleep until the specified window factor relative to the credential's lifetime has been reached, at which time it will try to refresh the credential. Legal values are between 0.5 (50%) and 1.0 (100%) inclusive; a default value of 0.8 (80%) is used if no value is specified. Currently applies only to OAUTHBEARER." },
+    "saslLoginRefreshWindowJitter": { "kind": "parameter", "displayName": "Sasl Login Refresh Window Jitter", "group": "security", "label": "common,security", "required": false, "type": "number", "javaType": "double", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0.05, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The maximum amount of random jitter relative to the credential's lifetime that is added to the login refresh thread's sleep time. Legal values are between 0 and 0.25 (25%) inclusive; a default value of 0.05 (5%) is used if no value is specified. Currently applies only to OAUTHBEARER." },
+    "saslMechanism": { "kind": "parameter", "displayName": "Sasl Mechanism", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "GSSAPI", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "SASL mechanism used for client connections. This may be any mechanism for which a security provider is available. GSSAPI is the default mechanism." },
+    "securityProtocol": { "kind": "parameter", "displayName": "Security Protocol", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "PLAINTEXT", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "Protocol used to communicate with brokers. Valid values are: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL." },
+    "securityProviders": { "kind": "parameter", "displayName": "Security Providers", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "A list of configurable creator classes each returning a provider implementing security algorithms. These classes should implement the org.apache.kafka.common.security.auth.SecurityProviderCreator interface." },
+    "sslCipherSuites": { "kind": "parameter", "displayName": "Ssl Cipher Suites", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "A list of cipher suites. This is a named combination of authentication, encryption, MAC and key exchange algorithm used to negotiate the security settings for a network connection using TLS or SSL network protocol. By default all the available cipher suites are supported." },
+    "sslEnabledProtocols": { "kind": "parameter", "displayName": "Ssl Enabled Protocols", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "TLSv1.2,TLSv1.3", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The list of protocols enabled for SSL connections. The default is 'TLSv1.2,TLSv1.3' when running with Java 11 or newer, 'TLSv1.2' otherwise. With the default value for Java 11, clients and servers will prefer TLSv1.3 if both support it and fallback to TLSv1.2 otherwise (assuming both support at least TLSv1.2). This default should be fine for most cases. Also see the config documentation for ssl.protocol." },
+    "sslEndpointIdentificationAlgorithm": { "kind": "parameter", "displayName": "Ssl Endpoint Identification Algorithm", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "https", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The endpoint identification algorithm to validate server hostname using server certificate." },
+    "sslEngineFactoryClass": { "kind": "parameter", "displayName": "Ssl Engine Factory Class", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The class of type org.apache.kafka.common.security.auth.SslEngineFactory to provide SSLEngine objects. Default value is org.apache.kafka.common.security.ssl.DefaultSslEngineFactory" },
+    "sslKeymanagerAlgorithm": { "kind": "parameter", "displayName": "Ssl Keymanager Algorithm", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "SunX509", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The algorithm used by key manager factory for SSL connections. Default value is the key manager factory algorithm configured for the Java Virtual Machine." },
+    "sslKeyPassword": { "kind": "parameter", "displayName": "Ssl Key Password", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The password of the private key in the key store file. This is optional for client." },
+    "sslKeystoreLocation": { "kind": "parameter", "displayName": "Ssl Keystore Location", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The location of the key store file. This is optional for client and can be used for two-way authentication for client." },
+    "sslKeystorePassword": { "kind": "parameter", "displayName": "Ssl Keystore Password", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The store password for the key store file. This is optional for client and only needed if ssl.keystore.location is configured." },
+    "sslKeystoreType": { "kind": "parameter", "displayName": "Ssl Keystore Type", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "JKS", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The file format of the key store file. This is optional for client." },
+    "sslProtocol": { "kind": "parameter", "displayName": "Ssl Protocol", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "TLSv1.3", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The SSL protocol used to generate the SSLContext. The default is 'TLSv1.3' when running with Java 11 or newer, 'TLSv1.2' otherwise. This value should be fine for most use cases. Allowed values in recent JVMs are 'TLSv1.2' and 'TLSv1.3'. 'TLS', 'TLSv1.1', 'SSL', 'SSLv2' and 'SSLv3' may be supported in older JVMs, but their usage is discouraged due to known security vulnerabilities. With the default value for this config and 'ssl.enabled.protocols', clients will downgrade to 'TLSv1.2' if the server does not support 'TLSv1.3'. If this config is set to 'TLSv1.2', clients will not use 'TLSv1.3' even if it is one of the values in ssl.enabled.protocols and the server only supports 'TLSv1.3'." },
+    "sslProvider": { "kind": "parameter", "displayName": "Ssl Provider", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The name of the security provider used for SSL connections. Default value is the default security provider of the JVM." },
+    "sslSecureRandomImplementation": { "kind": "parameter", "displayName": "Ssl Secure Random Implementation", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The SecureRandom PRNG implementation to use for SSL cryptography operations." },
+    "sslTrustmanagerAlgorithm": { "kind": "parameter", "displayName": "Ssl Trustmanager Algorithm", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "PKIX", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The algorithm used by trust manager factory for SSL connections. Default value is the trust manager factory algorithm configured for the Java Virtual Machine." },
+    "sslTruststoreLocation": { "kind": "parameter", "displayName": "Ssl Truststore Location", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The location of the trust store file." },
+    "sslTruststorePassword": { "kind": "parameter", "displayName": "Ssl Truststore Password", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The password for the trust store file. If a password is not set access to the truststore is still available, but integrity checking is disabled." },
+    "sslTruststoreType": { "kind": "parameter", "displayName": "Ssl Truststore Type", "group": "security", "label": "common,security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "JKS", "configurationClass": "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration", "configurationField": "configuration", "description": "The file format of the trust store file." }
+  }
+}
diff --git a/components-starter/README.adoc b/components-starter/README.adoc
index 81f788e..9f7b3dd 100644
--- a/components-starter/README.adoc
+++ b/components-starter/README.adoc
@@ -5,7 +5,7 @@
 == Camel Components
 
 // components: START
-Number of Camel components: 341 in 273 JAR artifacts (3 deprecated)
+Number of Camel components: 342 in 274 JAR artifacts (3 deprecated)
 
 [width="100%",cols="4,3,3,3,6",options="header"]
 |===
@@ -653,6 +653,8 @@
 
 | xref:latest@components::vertx-http-component.adoc[Vert.x HTTP Client] | camel-vertx-http-starter | Stable | 3.5 | Send requests to external HTTP servers using Vert.x
 
+| xref:latest@components::vertx-kafka-component.adoc[Vert.x Kafka] | camel-vertx-kafka-starter | Preview | 3.7 | Sent and receive messages to/from an Apache Kafka broker using vert.x Kafka client
+
 | xref:latest@components::vertx-websocket-component.adoc[Vert.x WebSocket] | camel-vertx-websocket-starter | Stable | 3.5 | Expose WebSocket endpoints and connect to remote WebSocket servers using Vert.x
 
 | xref:latest@components::vm-component.adoc[VM] | camel-vm-starter | Stable | 1.1 | Call another endpoint in the same CamelContext asynchronously.
diff --git a/components-starter/camel-vertx-kafka-starter/pom.xml b/components-starter/camel-vertx-kafka-starter/pom.xml
new file mode 100644
index 0000000..35ad7ce
--- /dev/null
+++ b/components-starter/camel-vertx-kafka-starter/pom.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.camel.springboot</groupId>
+    <artifactId>components-starter</artifactId>
+    <version>3.7.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>camel-vertx-kafka-starter</artifactId>
+  <packaging>jar</packaging>
+  <!--    <name>Camel Spring Boot :: Starters :: Dozer</name>-->
+  <!--    <description>Spring-Boot Starter for Camel Support for the Dozer type conversion framework</description>-->
+  <dependencies>
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter</artifactId>
+      <version>${spring-boot-version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-vertx-kafka</artifactId>
+      <version>${camel-version}</version>
+    </dependency>
+    <!--START OF GENERATED CODE-->
+    <dependency>
+      <groupId>org.apache.camel.springboot</groupId>
+      <artifactId>camel-core-starter</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel.springboot</groupId>
+      <artifactId>camel-spring-boot-starter</artifactId>
+    </dependency>
+    <!--END OF GENERATED CODE-->
+  </dependencies>
+</project>
diff --git a/components-starter/camel-vertx-kafka-starter/src/main/docs/vertx-kafka-starter.adoc b/components-starter/camel-vertx-kafka-starter/src/main/docs/vertx-kafka-starter.adoc
new file mode 100644
index 0000000..ddf216e
--- /dev/null
+++ b/components-starter/camel-vertx-kafka-starter/src/main/docs/vertx-kafka-starter.adoc
@@ -0,0 +1,129 @@
+// spring-boot-auto-configure options: START
+:page-partial:
+:doctitle: Camel Spring Boot Starter for vertx-kafka
+
+== Spring Boot Auto-Configuration
+
+When using vertx-kafka with Spring Boot make sure to use the following Maven dependency to have support for auto configuration:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.springboot</groupId>
+  <artifactId>camel-vertx-kafka-starter</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel core version -->
+</dependency>
+----
+
+
+The component supports 99 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.vertx-kafka.acks* | The number of acknowledgments the producer requires the leader to have received before considering a request complete. This controls the durability of records that are sent. The following settings are allowed: acks=0 If set to zero then the producer will not wait for any acknowledgment from the server at all. The record will be immediately added to the socket buffer and considered sent. No guarantee can be made that the server has received the record in this case, and the retries configuration will not take effect (as the client won't generally know of any failures). The offset given back for each record will always be set to -1. acks=1 This will mean the leader will write the record to its local log but will respond without awaiting full acknowledgement from all followers. In this case should the leader fail immediately after acknowledging the record but before the followers have replicated it then the record will be lost. acks=all This means the leader will wait for the full set of in-sync replicas to acknowledge the record. This guarantees that the record will not be lost as long as at least one in-sync replica remains alive. This is the strongest available guarantee. This is equivalent to the acks=-1 setting. | 1 | String
+| *camel.component.vertx-kafka.additional-properties* | Sets additional properties for either kafka consumer or kafka producer in case they can't be set directly on the camel configurations (e.g: new Kafka properties that are not reflected yet in Camel configurations), the properties have to be prefixed with additionalProperties.. E.g: additionalProperties.transactional.id=12345&additionalProperties.schema.registry.url=\http://localhost:8811/avro |  | Map
+| *camel.component.vertx-kafka.allow-auto-create-topics* | Allow automatic topic creation on the broker when subscribing to or assigning a topic. A topic being subscribed to will be automatically created only if the broker allows for it using auto.create.topics.enable broker configuration. This configuration must be set to false when using brokers older than 0.11.0 | true | Boolean
+| *camel.component.vertx-kafka.auto-commit-interval-ms* | The frequency in milliseconds that the consumer offsets are auto-committed to Kafka if enable.auto.commit is set to true. The option is a int type. | 5000 | Integer
+| *camel.component.vertx-kafka.auto-offset-reset* | What to do when there is no initial offset in Kafka or if the current offset does not exist any more on the server (e.g. because that data has been deleted): earliest: automatically reset the offset to the earliest offsetlatest: automatically reset the offset to the latest offsetnone: throw exception to the consumer if no previous offset is found for the consumer's groupanything else: throw exception to the consumer. | latest | String
+| *camel.component.vertx-kafka.autowired-enabled* | Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | Boolean
+| *camel.component.vertx-kafka.batch-size* | The producer will attempt to batch records together into fewer requests whenever multiple records are being sent to the same partition. This helps performance on both the client and the server. This configuration controls the default batch size in bytes. No attempt will be made to batch records larger than this size. Requests sent to brokers will contain multiple batches, one for each partition with data available to be sent. A small batch size will make batching less common and may reduce throughput (a batch size of zero will disable batching entirely). A very large batch size may use memory a bit more wastefully as we will always allocate a buffer of the specified batch size in anticipation of additional records. | 16384 | Integer
+| *camel.component.vertx-kafka.bootstrap-servers* | A list of host/port pairs to use for establishing the initial connection to the Kafka cluster. The client will make use of all servers irrespective of which servers are specified here for bootstrapping&mdash;this list only impacts the initial hosts used to discover the full set of servers. This list should be in the form host1:port1,host2:port2,.... Since these servers are just used for the initial connection to discover the full cluster membership (which may change dynamically), this list need not contain the full set of servers (you may want more than one, though, in case a server is down). |  | String
+| *camel.component.vertx-kafka.bridge-error-handler* | 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 | Boolean
+| *camel.component.vertx-kafka.buffer-memory* | The total bytes of memory the producer can use to buffer records waiting to be sent to the server. If records are sent faster than they can be delivered to the server the producer will block for max.block.ms after which it will throw an exception.This setting should correspond roughly to the total memory the producer will use, but is not a hard bound since not all memory the producer uses is used for buffering. Some additional memory will be used for compression (if compression is enabled) as well as for maintaining in-flight requests. | 33554432 | Long
+| *camel.component.vertx-kafka.check-crcs* | Automatically check the CRC32 of the records consumed. This ensures no on-the-wire or on-disk corruption to the messages occurred. This check adds some overhead, so it may be disabled in cases seeking extreme performance. | true | Boolean
+| *camel.component.vertx-kafka.client-dns-lookup* | Controls how the client uses DNS lookups. If set to use_all_dns_ips, connect to each returned IP address in sequence until a successful connection is established. After a disconnection, the next IP is used. Once all IPs have been used once, the client resolves the IP(s) from the hostname again (both the JVM and the OS cache DNS name lookups, however). If set to resolve_canonical_bootstrap_servers_only, resolve each bootstrap address into a list of canonical names. After the bootstrap phase, this behaves the same as use_all_dns_ips. If set to default (deprecated), attempt to connect to the first IP address returned by the lookup, even if the lookup returns multiple IP addresses. | use_all_dns_ips | String
+| *camel.component.vertx-kafka.client-id* | An id string to pass to the server when making requests. The purpose of this is to be able to track the source of requests beyond just ip/port by allowing a logical application name to be included in server-side request logging. |  | String
+| *camel.component.vertx-kafka.client-rack* | A rack identifier for this client. This can be any string value which indicates where this client is physically located. It corresponds with the broker config 'broker.rack' |  | String
+| *camel.component.vertx-kafka.compression-type* | The compression type for all data generated by the producer. The default is none (i.e. no compression). Valid values are none, gzip, snappy, lz4, or zstd. Compression is of full batches of data, so the efficacy of batching will also impact the compression ratio (more batching means better compression). | none | String
+| *camel.component.vertx-kafka.configuration* | The component configurations. The option is a org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration type. |  | VertxKafkaConfiguration
+| *camel.component.vertx-kafka.connections-max-idle-ms* | Close idle connections after the number of milliseconds specified by this config. The option is a long type. | 540000 | Long
+| *camel.component.vertx-kafka.default-api-timeout-ms* | Specifies the timeout (in milliseconds) for client APIs. This configuration is used as the default timeout for all client operations that do not specify a timeout parameter. The option is a int type. | 60000 | Integer
+| *camel.component.vertx-kafka.delivery-timeout-ms* | An upper bound on the time to report success or failure after a call to send() returns. This limits the total time that a record will be delayed prior to sending, the time to await acknowledgement from the broker (if expected), and the time allowed for retriable send failures. The producer may report failure to send a record earlier than this config if either an unrecoverable error is encountered, the retries have been exhausted, or the record is added to a batch which reached an earlier delivery expiration deadline. The value of this config should be greater than or equal to the sum of request.timeout.ms and linger.ms. The option is a int type. | 120000 | Integer
+| *camel.component.vertx-kafka.enable-auto-commit* | If true the consumer's offset will be periodically committed in the background. | true | Boolean
+| *camel.component.vertx-kafka.enable-idempotence* | When set to 'true', the producer will ensure that exactly one copy of each message is written in the stream. If 'false', producer retries due to broker failures, etc., may write duplicates of the retried message in the stream. Note that enabling idempotence requires max.in.flight.requests.per.connection to be less than or equal to 5, retries to be greater than 0 and acks must be 'all'. If these values are not explicitly set by the user, suitable values will be chosen. If incompatible values are set, a ConfigException will be thrown. | false | Boolean
+| *camel.component.vertx-kafka.enabled* | Whether to enable auto configuration of the vertx-kafka component. This is enabled by default. |  | Boolean
+| *camel.component.vertx-kafka.exclude-internal-topics* | Whether internal topics matching a subscribed pattern should be excluded from the subscription. It is always possible to explicitly subscribe to an internal topic. | true | Boolean
+| *camel.component.vertx-kafka.fetch-max-bytes* | The maximum amount of data the server should return for a fetch request. Records are fetched in batches by the consumer, and if the first record batch in the first non-empty partition of the fetch is larger than this value, the record batch will still be returned to ensure that the consumer can make progress. As such, this is not a absolute maximum. The maximum record batch size accepted by the broker is defined via message.max.bytes (broker config) or max.message.bytes (topic config). Note that the consumer performs multiple fetches in parallel. | 52428800 | Integer
+| *camel.component.vertx-kafka.fetch-max-wait-ms* | The maximum amount of time the server will block before answering the fetch request if there isn't sufficient data to immediately satisfy the requirement given by fetch.min.bytes. The option is a int type. | 500 | Integer
+| *camel.component.vertx-kafka.fetch-min-bytes* | The minimum amount of data the server should return for a fetch request. If insufficient data is available the request will wait for that much data to accumulate before answering the request. The default setting of 1 byte means that fetch requests are answered as soon as a single byte of data is available or the fetch request times out waiting for data to arrive. Setting this to something greater than 1 will cause the server to wait for larger amounts of data to accumulate which can improve server throughput a bit at the cost of some additional latency. | 1 | Integer
+| *camel.component.vertx-kafka.group-id* | A unique string that identifies the consumer group this consumer belongs to. This property is required if the consumer uses either the group management functionality by using subscribe(topic) or the Kafka-based offset management strategy. |  | String
+| *camel.component.vertx-kafka.group-instance-id* | A unique identifier of the consumer instance provided by the end user. Only non-empty strings are permitted. If set, the consumer is treated as a static member, which means that only one instance with this ID is allowed in the consumer group at any time. This can be used in combination with a larger session timeout to avoid group rebalances caused by transient unavailability (e.g. process restarts). If not set, the consumer will join the group as a dynamic member, which is the traditional behavior. |  | String
+| *camel.component.vertx-kafka.header-filter-strategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. The option is a org.apache.camel.spi.HeaderFilterStrategy type. |  | HeaderFilterStrategy
+| *camel.component.vertx-kafka.heartbeat-interval-ms* | The expected time between heartbeats to the consumer coordinator when using Kafka's group management facilities. Heartbeats are used to ensure that the consumer's session stays active and to facilitate rebalancing when new consumers join or leave the group. The value must be set lower than session.timeout.ms, but typically should be set no higher than 1/3 of that value. It can be adjusted even lower to control the expected time for normal rebalances. The option is a int type. | 3000 | Integer
+| *camel.component.vertx-kafka.interceptor-classes* | A list of classes to use as interceptors. Implementing the org.apache.kafka.clients.producer.ProducerInterceptor interface allows you to intercept (and possibly mutate) the records received by the producer before they are published to the Kafka cluster. By default, there are no interceptors. |  | String
+| *camel.component.vertx-kafka.isolation-level* | Controls how to read messages written transactionally. If set to read_committed, consumer.poll() will only return transactional messages which have been committed. If set to read_uncommitted' (the default), consumer.poll() will return all messages, even transactional messages which have been aborted. Non-transactional messages will be returned unconditionally in either mode. Messages will always be returned in offset order. Hence, in read_committed mode, consumer.poll() will only return messages up to the last stable offset (LSO), which is the one less than the offset of the first open transaction. In particular any messages appearing after messages belonging to ongoing transactions will be withheld until the relevant transaction has been completed. As a result, read_committed consumers will not be able to read up to the high watermark when there are in flight transactions. Further, when in read_committed the seekToEnd method will return the LSO | read_uncommitted | String
+| *camel.component.vertx-kafka.key-deserializer* | Deserializer class for key that implements the org.apache.kafka.common.serialization.Deserializer interface. | org.apache.kafka.common.serialization.StringDeserializer | String
+| *camel.component.vertx-kafka.key-serializer* | Serializer class for key that implements the org.apache.kafka.common.serialization.Serializer interface. | org.apache.kafka.common.serialization.StringSerializer | String
+| *camel.component.vertx-kafka.lazy-start-producer* | 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 | Boolean
+| *camel.component.vertx-kafka.linger-ms* | The producer groups together any records that arrive in between request transmissions into a single batched request. Normally this occurs only under load when records arrive faster than they can be sent out. However in some circumstances the client may want to reduce the number of requests even under moderate load. This setting accomplishes this by adding a small amount of artificial delay&mdash;that is, rather than immediately sending out a record the producer will wait for up to the given delay to allow other records to be sent so that the sends can be batched together. This can be thought of as analogous to Nagle's algorithm in TCP. This setting gives the upper bound on the delay for batching: once we get batch.size worth of records for a partition it will be sent immediately regardless of this setting, however if we have fewer than this many bytes accumulated for this partition we will 'linger' for the specified time waiting for more records to show up. This setting defaults to 0 (i.e. no delay). Setting linger.ms=5, for example, would have the effect of reducing the number of requests sent but would add up to 5ms of latency to records sent in the absence of load. The option is a long type. | 0 | Long
+| *camel.component.vertx-kafka.max-block-ms* | The configuration controls how long KafkaProducer.send() and KafkaProducer.partitionsFor() will block.These methods can be blocked either because the buffer is full or metadata unavailable.Blocking in the user-supplied serializers or partitioner will not be counted against this timeout. The option is a long type. | 60000 | Long
+| *camel.component.vertx-kafka.max-in-flight-requests-per-connection* | The maximum number of unacknowledged requests the client will send on a single connection before blocking. Note that if this setting is set to be greater than 1 and there are failed sends, there is a risk of message re-ordering due to retries (i.e., if retries are enabled). | 5 | Integer
+| *camel.component.vertx-kafka.max-partition-fetch-bytes* | The maximum amount of data per-partition the server will return. Records are fetched in batches by the consumer. If the first record batch in the first non-empty partition of the fetch is larger than this limit, the batch will still be returned to ensure that the consumer can make progress. The maximum record batch size accepted by the broker is defined via message.max.bytes (broker config) or max.message.bytes (topic config). See fetch.max.bytes for limiting the consumer request size. | 1048576 | Integer
+| *camel.component.vertx-kafka.max-poll-interval-ms* | The maximum delay between invocations of poll() when using consumer group management. This places an upper bound on the amount of time that the consumer can be idle before fetching more records. If poll() is not called before expiration of this timeout, then the consumer is considered failed and the group will rebalance in order to reassign the partitions to another member. For consumers using a non-null group.instance.id which reach this timeout, partitions will not be immediately reassigned. Instead, the consumer will stop sending heartbeats and partitions will be reassigned after expiration of session.timeout.ms. This mirrors the behavior of a static consumer which has shutdown. The option is a int type. | 300000 | Integer
+| *camel.component.vertx-kafka.max-poll-records* | The maximum number of records returned in a single call to poll(). | 500 | Integer
+| *camel.component.vertx-kafka.max-request-size* | The maximum size of a request in bytes. This setting will limit the number of record batches the producer will send in a single request to avoid sending huge requests. This is also effectively a cap on the maximum uncompressed record batch size. Note that the server has its own cap on the record batch size (after compression if compression is enabled) which may be different from this. | 1048576 | Integer
+| *camel.component.vertx-kafka.metadata-max-age-ms* | The period of time in milliseconds after which we force a refresh of metadata even if we haven't seen any partition leadership changes to proactively discover any new brokers or partitions. The option is a long type. | 300000 | Long
+| *camel.component.vertx-kafka.metadata-max-idle-ms* | Controls how long the producer will cache metadata for a topic that's idle. If the elapsed time since a topic was last produced to exceeds the metadata idle duration, then the topic's metadata is forgotten and the next access to it will force a metadata fetch request. The option is a long type. | 300000 | Long
+| *camel.component.vertx-kafka.metric-reporters* | A list of classes to use as metrics reporters. Implementing the org.apache.kafka.common.metrics.MetricsReporter interface allows plugging in classes that will be notified of new metric creation. The JmxReporter is always included to register JMX statistics. |  | String
+| *camel.component.vertx-kafka.metrics-num-samples* | The number of samples maintained to compute metrics. | 2 | Integer
+| *camel.component.vertx-kafka.metrics-recording-level* | The highest recording level for metrics. | INFO | String
+| *camel.component.vertx-kafka.metrics-sample-window-ms* | The window of time a metrics sample is computed over. The option is a long type. | 30000 | Long
+| *camel.component.vertx-kafka.partition-assignment-strategy* | A list of class names or class types, ordered by preference, of supported partition assignment strategies that the client will use to distribute partition ownership amongst consumer instances when group management is used.In addition to the default class specified below, you can use the org.apache.kafka.clients.consumer.RoundRobinAssignorclass for round robin assignments of partitions to consumers. Implementing the org.apache.kafka.clients.consumer.ConsumerPartitionAssignor interface allows you to plug in a custom assignmentstrategy. | org.apache.kafka.clients.consumer.RangeAssignor | String
+| *camel.component.vertx-kafka.partition-id* | The partition to which the record will be sent (or null if no partition was specified) or read from a particular partition if set. Header VertxKafkaConstants#PARTITION_ID If configured, it will take precedence over this config |  | Integer
+| *camel.component.vertx-kafka.partitioner-class* | Partitioner class that implements the org.apache.kafka.clients.producer.Partitioner interface. | org.apache.kafka.clients.producer.internals.DefaultPartitioner | String
+| *camel.component.vertx-kafka.receive-buffer-bytes* | The size of the TCP receive buffer (SO_RCVBUF) to use when reading data. If the value is -1, the OS default will be used. | 32768 | Integer
+| *camel.component.vertx-kafka.reconnect-backoff-max-ms* | The maximum amount of time in milliseconds to wait when reconnecting to a broker that has repeatedly failed to connect. If provided, the backoff per host will increase exponentially for each consecutive connection failure, up to this maximum. After calculating the backoff increase, 20% random jitter is added to avoid connection storms. The option is a long type. | 1000 | Long
+| *camel.component.vertx-kafka.reconnect-backoff-ms* | The base amount of time to wait before attempting to reconnect to a given host. This avoids repeatedly connecting to a host in a tight loop. This backoff applies to all connection attempts by the client to a broker. The option is a long type. | 50 | Long
+| *camel.component.vertx-kafka.request-timeout-ms* | The configuration controls the maximum amount of time the client will wait for the response of a request. If the response is not received before the timeout elapses the client will resend the request if necessary or fail the request if retries are exhausted. This should be larger than replica.lag.time.max.ms (a broker configuration) to reduce the possibility of message duplication due to unnecessary producer retries. The option is a int type. | 30000 | Integer
+| *camel.component.vertx-kafka.retries* | Setting a value greater than zero will cause the client to resend any record whose send fails with a potentially transient error. Note that this retry is no different than if the client resent the record upon receiving the error. Allowing retries without setting max.in.flight.requests.per.connection to 1 will potentially change the ordering of records because if two batches are sent to a single partition, and the first fails and is retried but the second succeeds, then the records in the second batch may appear first. Note additionally that produce requests will be failed before the number of retries has been exhausted if the timeout configured by delivery.timeout.ms expires first before successful acknowledgement. Users should generally prefer to leave this config unset and instead use delivery.timeout.ms to control retry behavior. | 2147483647 | Integer
+| *camel.component.vertx-kafka.retry-backoff-ms* | The amount of time to wait before attempting to retry a failed request to a given topic partition. This avoids repeatedly sending requests in a tight loop under some failure scenarios. The option is a long type. | 100 | Long
+| *camel.component.vertx-kafka.sasl-client-callback-handler-class* | The fully qualified name of a SASL client callback handler class that implements the AuthenticateCallbackHandler interface. |  | String
+| *camel.component.vertx-kafka.sasl-jaas-config* | JAAS login context parameters for SASL connections in the format used by JAAS configuration files. JAAS configuration file format is described here. The format for the value is: 'loginModuleClass controlFlag (optionName=optionValue);'. For brokers, the config must be prefixed with listener prefix and SASL mechanism name in lower-case. For example, listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=com.example.ScramLoginModule required; |  | String
+| *camel.component.vertx-kafka.sasl-kerberos-kinit-cmd* | Kerberos kinit command path. | /usr/bin/kinit | String
+| *camel.component.vertx-kafka.sasl-kerberos-min-time-before-relogin* | Login thread sleep time between refresh attempts. | 60000 | Long
+| *camel.component.vertx-kafka.sasl-kerberos-service-name* | The Kerberos principal name that Kafka runs as. This can be defined either in Kafka's JAAS config or in Kafka's config. |  | String
+| *camel.component.vertx-kafka.sasl-kerberos-ticket-renew-jitter* | Percentage of random jitter added to the renewal time. |  | Double
+| *camel.component.vertx-kafka.sasl-kerberos-ticket-renew-window-factor* | Login thread will sleep until the specified window factor of time from last refresh to ticket's expiry has been reached, at which time it will try to renew the ticket. |  | Double
+| *camel.component.vertx-kafka.sasl-login-callback-handler-class* | The fully qualified name of a SASL login callback handler class that implements the AuthenticateCallbackHandler interface. For brokers, login callback handler config must be prefixed with listener prefix and SASL mechanism name in lower-case. For example, listener.name.sasl_ssl.scram-sha-256.sasl.login.callback.handler.class=com.example.CustomScramLoginCallbackHandler |  | String
+| *camel.component.vertx-kafka.sasl-login-class* | The fully qualified name of a class that implements the Login interface. For brokers, login config must be prefixed with listener prefix and SASL mechanism name in lower-case. For example, listener.name.sasl_ssl.scram-sha-256.sasl.login.class=com.example.CustomScramLogin |  | String
+| *camel.component.vertx-kafka.sasl-login-refresh-buffer-seconds* | The amount of buffer time before credential expiration to maintain when refreshing a credential, in seconds. If a refresh would otherwise occur closer to expiration than the number of buffer seconds then the refresh will be moved up to maintain as much of the buffer time as possible. Legal values are between 0 and 3600 (1 hour); a default value of 300 (5 minutes) is used if no value is specified. This value and sasl.login.refresh.min.period.seconds are both ignored if their sum exceeds the remaining lifetime of a credential. Currently applies only to OAUTHBEARER. | 300 | Short
+| *camel.component.vertx-kafka.sasl-login-refresh-min-period-seconds* | The desired minimum time for the login refresh thread to wait before refreshing a credential, in seconds. Legal values are between 0 and 900 (15 minutes); a default value of 60 (1 minute) is used if no value is specified. This value and sasl.login.refresh.buffer.seconds are both ignored if their sum exceeds the remaining lifetime of a credential. Currently applies only to OAUTHBEARER. | 60 | Short
+| *camel.component.vertx-kafka.sasl-login-refresh-window-factor* | Login refresh thread will sleep until the specified window factor relative to the credential's lifetime has been reached, at which time it will try to refresh the credential. Legal values are between 0.5 (50%) and 1.0 (100%) inclusive; a default value of 0.8 (80%) is used if no value is specified. Currently applies only to OAUTHBEARER. |  | Double
+| *camel.component.vertx-kafka.sasl-login-refresh-window-jitter* | The maximum amount of random jitter relative to the credential's lifetime that is added to the login refresh thread's sleep time. Legal values are between 0 and 0.25 (25%) inclusive; a default value of 0.05 (5%) is used if no value is specified. Currently applies only to OAUTHBEARER. |  | Double
+| *camel.component.vertx-kafka.sasl-mechanism* | SASL mechanism used for client connections. This may be any mechanism for which a security provider is available. GSSAPI is the default mechanism. | GSSAPI | String
+| *camel.component.vertx-kafka.security-protocol* | Protocol used to communicate with brokers. Valid values are: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL. | PLAINTEXT | String
+| *camel.component.vertx-kafka.security-providers* | A list of configurable creator classes each returning a provider implementing security algorithms. These classes should implement the org.apache.kafka.common.security.auth.SecurityProviderCreator interface. |  | String
+| *camel.component.vertx-kafka.seek-to-offset* | Set if KafkaConsumer will read from a particular offset on startup. This config will take precedence over seekTo config |  | Long
+| *camel.component.vertx-kafka.seek-to-position* | Set if KafkaConsumer will read from beginning or end on startup: beginning : read from beginning end : read from end. |  | String
+| *camel.component.vertx-kafka.send-buffer-bytes* | The size of the TCP send buffer (SO_SNDBUF) to use when sending data. If the value is -1, the OS default will be used. | 131072 | Integer
+| *camel.component.vertx-kafka.session-timeout-ms* | The timeout used to detect client failures when using Kafka's group management facility. The client sends periodic heartbeats to indicate its liveness to the broker. If no heartbeats are received by the broker before the expiration of this session timeout, then the broker will remove this client from the group and initiate a rebalance. Note that the value must be in the allowable range as configured in the broker configuration by group.min.session.timeout.ms and group.max.session.timeout.ms. The option is a int type. | 10000 | Integer
+| *camel.component.vertx-kafka.ssl-cipher-suites* | A list of cipher suites. This is a named combination of authentication, encryption, MAC and key exchange algorithm used to negotiate the security settings for a network connection using TLS or SSL network protocol. By default all the available cipher suites are supported. |  | String
+| *camel.component.vertx-kafka.ssl-enabled-protocols* | The list of protocols enabled for SSL connections. The default is 'TLSv1.2,TLSv1.3' when running with Java 11 or newer, 'TLSv1.2' otherwise. With the default value for Java 11, clients and servers will prefer TLSv1.3 if both support it and fallback to TLSv1.2 otherwise (assuming both support at least TLSv1.2). This default should be fine for most cases. Also see the config documentation for ssl.protocol. | TLSv1.2,TLSv1.3 | String
+| *camel.component.vertx-kafka.ssl-endpoint-identification-algorithm* | The endpoint identification algorithm to validate server hostname using server certificate. | https | String
+| *camel.component.vertx-kafka.ssl-engine-factory-class* | The class of type org.apache.kafka.common.security.auth.SslEngineFactory to provide SSLEngine objects. Default value is org.apache.kafka.common.security.ssl.DefaultSslEngineFactory |  | String
+| *camel.component.vertx-kafka.ssl-key-password* | The password of the private key in the key store file. This is optional for client. |  | String
+| *camel.component.vertx-kafka.ssl-keymanager-algorithm* | The algorithm used by key manager factory for SSL connections. Default value is the key manager factory algorithm configured for the Java Virtual Machine. | SunX509 | String
+| *camel.component.vertx-kafka.ssl-keystore-location* | The location of the key store file. This is optional for client and can be used for two-way authentication for client. |  | String
+| *camel.component.vertx-kafka.ssl-keystore-password* | The store password for the key store file. This is optional for client and only needed if ssl.keystore.location is configured. |  | String
+| *camel.component.vertx-kafka.ssl-keystore-type* | The file format of the key store file. This is optional for client. | JKS | String
+| *camel.component.vertx-kafka.ssl-protocol* | The SSL protocol used to generate the SSLContext. The default is 'TLSv1.3' when running with Java 11 or newer, 'TLSv1.2' otherwise. This value should be fine for most use cases. Allowed values in recent JVMs are 'TLSv1.2' and 'TLSv1.3'. 'TLS', 'TLSv1.1', 'SSL', 'SSLv2' and 'SSLv3' may be supported in older JVMs, but their usage is discouraged due to known security vulnerabilities. With the default value for this config and 'ssl.enabled.protocols', clients will downgrade to 'TLSv1.2' if the server does not support 'TLSv1.3'. If this config is set to 'TLSv1.2', clients will not use 'TLSv1.3' even if it is one of the values in ssl.enabled.protocols and the server only supports 'TLSv1.3'. | TLSv1.3 | String
+| *camel.component.vertx-kafka.ssl-provider* | The name of the security provider used for SSL connections. Default value is the default security provider of the JVM. |  | String
+| *camel.component.vertx-kafka.ssl-secure-random-implementation* | The SecureRandom PRNG implementation to use for SSL cryptography operations. |  | String
+| *camel.component.vertx-kafka.ssl-trustmanager-algorithm* | The algorithm used by trust manager factory for SSL connections. Default value is the trust manager factory algorithm configured for the Java Virtual Machine. | PKIX | String
+| *camel.component.vertx-kafka.ssl-truststore-location* | The location of the trust store file. |  | String
+| *camel.component.vertx-kafka.ssl-truststore-password* | The password for the trust store file. If a password is not set access to the truststore is still available, but integrity checking is disabled. |  | String
+| *camel.component.vertx-kafka.ssl-truststore-type* | The file format of the trust store file. | JKS | String
+| *camel.component.vertx-kafka.transaction-timeout-ms* | The maximum amount of time in ms that the transaction coordinator will wait for a transaction status update from the producer before proactively aborting the ongoing transaction.If this value is larger than the transaction.max.timeout.ms setting in the broker, the request will fail with a InvalidTransactionTimeout error. The option is a int type. | 60000 | Integer
+| *camel.component.vertx-kafka.transactional-id* | The TransactionalId to use for transactional delivery. This enables reliability semantics which span multiple producer sessions since it allows the client to guarantee that transactions using the same TransactionalId have been completed prior to starting any new transactions. If no TransactionalId is provided, then the producer is limited to idempotent delivery. If a TransactionalId is configured, enable.idempotence is implied. By default the TransactionId is not configured, which means transactions cannot be used. Note that, by default, transactions require a cluster of at least three brokers which is the recommended setting for production; for development you can change this, by adjusting broker setting transaction.state.log.replication.factor. |  | String
+| *camel.component.vertx-kafka.value-deserializer* | Deserializer class for value that implements the org.apache.kafka.common.serialization.Deserializer interface. | org.apache.kafka.common.serialization.StringDeserializer | String
+| *camel.component.vertx-kafka.value-serializer* | Serializer class for value that implements the org.apache.kafka.common.serialization.Serializer interface. | org.apache.kafka.common.serialization.StringSerializer | String
+| *camel.component.vertx-kafka.vertx* | To use an existing vertx instead of creating a new instance. The option is a io.vertx.core.Vertx type. |  | Vertx
+| *camel.component.vertx-kafka.vertx-options* | To provide a custom set of vertx options for configuring vertx. The option is a io.vertx.core.VertxOptions type. |  | VertxOptions
+|===
+
+
+// spring-boot-auto-configure options: END
diff --git a/components-starter/camel-vertx-kafka-starter/src/main/java/org/apache/camel/component/vertx/kafka/springboot/VertxKafkaComponentAutoConfiguration.java b/components-starter/camel-vertx-kafka-starter/src/main/java/org/apache/camel/component/vertx/kafka/springboot/VertxKafkaComponentAutoConfiguration.java
new file mode 100644
index 0000000..6a2f21f
--- /dev/null
+++ b/components-starter/camel-vertx-kafka-starter/src/main/java/org/apache/camel/component/vertx/kafka/springboot/VertxKafkaComponentAutoConfiguration.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.vertx.kafka.springboot;
+
+import javax.annotation.Generated;
+import org.apache.camel.CamelContext;
+import org.apache.camel.Component;
+import org.apache.camel.component.vertx.kafka.VertxKafkaComponent;
+import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.ComponentConfigurationProperties;
+import org.apache.camel.spring.boot.util.CamelPropertiesHelper;
+import org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
+import org.apache.camel.spring.boot.util.ConditionalOnHierarchicalProperties;
+import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.boot.convert.ApplicationConversionService;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
+
+/**
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.springboot.maven.SpringBootAutoConfigurationMojo")
+@Configuration(proxyBeanMethods = false)
+@AutoConfigureAfter(CamelAutoConfiguration.class)
+@Conditional(ConditionalOnCamelContextAndAutoConfigurationBeans.class)
+@EnableConfigurationProperties({ComponentConfigurationProperties.class,VertxKafkaComponentConfiguration.class})
+@ConditionalOnHierarchicalProperties({"camel.component", "camel.component.vertx-kafka"})
+public class VertxKafkaComponentAutoConfiguration {
+
+    @Autowired
+    private ApplicationContext applicationContext;
+    private final CamelContext camelContext;
+    @Autowired
+    private VertxKafkaComponentConfiguration configuration;
+
+    public VertxKafkaComponentAutoConfiguration(
+            org.apache.camel.CamelContext camelContext) {
+        this.camelContext = camelContext;
+        ApplicationConversionService acs = (ApplicationConversionService) ApplicationConversionService.getSharedInstance();
+        acs.addConverter(new VertxKafkaComponentConverter(camelContext));
+    }
+
+    @Lazy
+    @Bean
+    public ComponentCustomizer configureVertxKafkaComponent() {
+        return new ComponentCustomizer() {
+            @Override
+            public void configure(String name, Component target) {
+                CamelPropertiesHelper.copyProperties(camelContext, configuration, target);
+            }
+            @Override
+            public boolean isEnabled(String name, Component target) {
+                return HierarchicalPropertiesEvaluator.evaluate(
+                        applicationContext,
+                        "camel.component.customizer",
+                        "camel.component.vertx-kafka.customizer")
+                    && target instanceof VertxKafkaComponent;
+            }
+        };
+    }
+}
\ No newline at end of file
diff --git a/components-starter/camel-vertx-kafka-starter/src/main/java/org/apache/camel/component/vertx/kafka/springboot/VertxKafkaComponentConfiguration.java b/components-starter/camel-vertx-kafka-starter/src/main/java/org/apache/camel/component/vertx/kafka/springboot/VertxKafkaComponentConfiguration.java
new file mode 100644
index 0000000..dfd1877
--- /dev/null
+++ b/components-starter/camel-vertx-kafka-starter/src/main/java/org/apache/camel/component/vertx/kafka/springboot/VertxKafkaComponentConfiguration.java
@@ -0,0 +1,1600 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.vertx.kafka.springboot;
+
+import java.util.Map;
+import javax.annotation.Generated;
+import io.vertx.core.Vertx;
+import io.vertx.core.VertxOptions;
+import org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration;
+import org.apache.camel.spi.HeaderFilterStrategy;
+import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+/**
+ * Sent and receive messages to/from an Apache Kafka broker using vert.x Kafka
+ * client
+ * 
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.springboot.maven.SpringBootAutoConfigurationMojo")
+@ConfigurationProperties(prefix = "camel.component.vertx-kafka")
+public class VertxKafkaComponentConfiguration
+        extends
+            ComponentConfigurationPropertiesCommon {
+
+    /**
+     * Whether to enable auto configuration of the vertx-kafka component. This
+     * is enabled by default.
+     */
+    private Boolean enabled;
+    /**
+     * Sets additional properties for either kafka consumer or kafka producer in
+     * case they can't be set directly on the camel configurations (e.g: new
+     * Kafka properties that are not reflected yet in Camel configurations), the
+     * properties have to be prefixed with additionalProperties.. E.g:
+     * additionalProperties.transactional.id=12345&additionalProperties.schema.registry.url=http://localhost:8811/avro
+     */
+    private Map<String, Object> additionalProperties;
+    /**
+     * A list of host/port pairs to use for establishing the initial connection
+     * to the Kafka cluster. The client will make use of all servers
+     * irrespective of which servers are specified here for
+     * bootstrapping&mdash;this list only impacts the initial hosts used to
+     * discover the full set of servers. This list should be in the form
+     * host1:port1,host2:port2,.... Since these servers are just used for the
+     * initial connection to discover the full cluster membership (which may
+     * change dynamically), this list need not contain the full set of servers
+     * (you may want more than one, though, in case a server is down).
+     */
+    private String bootstrapServers;
+    /**
+     * Controls how the client uses DNS lookups. If set to use_all_dns_ips,
+     * connect to each returned IP address in sequence until a successful
+     * connection is established. After a disconnection, the next IP is used.
+     * Once all IPs have been used once, the client resolves the IP(s) from the
+     * hostname again (both the JVM and the OS cache DNS name lookups, however).
+     * If set to resolve_canonical_bootstrap_servers_only, resolve each
+     * bootstrap address into a list of canonical names. After the bootstrap
+     * phase, this behaves the same as use_all_dns_ips. If set to default
+     * (deprecated), attempt to connect to the first IP address returned by the
+     * lookup, even if the lookup returns multiple IP addresses.
+     */
+    private String clientDnsLookup = "use_all_dns_ips";
+    /**
+     * An id string to pass to the server when making requests. The purpose of
+     * this is to be able to track the source of requests beyond just ip/port by
+     * allowing a logical application name to be included in server-side request
+     * logging.
+     */
+    private String clientId;
+    /**
+     * The component configurations. The option is a
+     * org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration type.
+     */
+    private VertxKafkaConfiguration configuration;
+    /**
+     * Close idle connections after the number of milliseconds specified by this
+     * config. The option is a long type.
+     */
+    private Long connectionsMaxIdleMs = 540000L;
+    /**
+     * To use a custom HeaderFilterStrategy to filter header to and from Camel
+     * message. The option is a org.apache.camel.spi.HeaderFilterStrategy type.
+     */
+    private HeaderFilterStrategy headerFilterStrategy;
+    /**
+     * A list of classes to use as interceptors. Implementing the
+     * org.apache.kafka.clients.producer.ProducerInterceptor interface allows
+     * you to intercept (and possibly mutate) the records received by the
+     * producer before they are published to the Kafka cluster. By default,
+     * there are no interceptors.
+     */
+    private String interceptorClasses;
+    /**
+     * The period of time in milliseconds after which we force a refresh of
+     * metadata even if we haven't seen any partition leadership changes to
+     * proactively discover any new brokers or partitions. The option is a long
+     * type.
+     */
+    private Long metadataMaxAgeMs = 300000L;
+    /**
+     * A list of classes to use as metrics reporters. Implementing the
+     * org.apache.kafka.common.metrics.MetricsReporter interface allows plugging
+     * in classes that will be notified of new metric creation. The JmxReporter
+     * is always included to register JMX statistics.
+     */
+    private String metricReporters;
+    /**
+     * The number of samples maintained to compute metrics.
+     */
+    private Integer metricsNumSamples = 2;
+    /**
+     * The highest recording level for metrics.
+     */
+    private String metricsRecordingLevel = "INFO";
+    /**
+     * The window of time a metrics sample is computed over. The option is a
+     * long type.
+     */
+    private Long metricsSampleWindowMs = 30000L;
+    /**
+     * The partition to which the record will be sent (or null if no partition
+     * was specified) or read from a particular partition if set. Header
+     * VertxKafkaConstants#PARTITION_ID If configured, it will take precedence
+     * over this config
+     */
+    private Integer partitionId;
+    /**
+     * The size of the TCP receive buffer (SO_RCVBUF) to use when reading data.
+     * If the value is -1, the OS default will be used.
+     */
+    private Integer receiveBufferBytes = 32768;
+    /**
+     * The maximum amount of time in milliseconds to wait when reconnecting to a
+     * broker that has repeatedly failed to connect. If provided, the backoff
+     * per host will increase exponentially for each consecutive connection
+     * failure, up to this maximum. After calculating the backoff increase, 20%
+     * random jitter is added to avoid connection storms. The option is a long
+     * type.
+     */
+    private Long reconnectBackoffMaxMs = 1000L;
+    /**
+     * The base amount of time to wait before attempting to reconnect to a given
+     * host. This avoids repeatedly connecting to a host in a tight loop. This
+     * backoff applies to all connection attempts by the client to a broker. The
+     * option is a long type.
+     */
+    private Long reconnectBackoffMs = 50L;
+    /**
+     * The configuration controls the maximum amount of time the client will
+     * wait for the response of a request. If the response is not received
+     * before the timeout elapses the client will resend the request if
+     * necessary or fail the request if retries are exhausted. This should be
+     * larger than replica.lag.time.max.ms (a broker configuration) to reduce
+     * the possibility of message duplication due to unnecessary producer
+     * retries. The option is a int type.
+     */
+    private Integer requestTimeoutMs = 30000;
+    /**
+     * The amount of time to wait before attempting to retry a failed request to
+     * a given topic partition. This avoids repeatedly sending requests in a
+     * tight loop under some failure scenarios. The option is a long type.
+     */
+    private Long retryBackoffMs = 100L;
+    /**
+     * The size of the TCP send buffer (SO_SNDBUF) to use when sending data. If
+     * the value is -1, the OS default will be used.
+     */
+    private Integer sendBufferBytes = 131072;
+    /**
+     * Allow automatic topic creation on the broker when subscribing to or
+     * assigning a topic. A topic being subscribed to will be automatically
+     * created only if the broker allows for it using auto.create.topics.enable
+     * broker configuration. This configuration must be set to false when using
+     * brokers older than 0.11.0
+     */
+    private Boolean allowAutoCreateTopics = true;
+    /**
+     * The frequency in milliseconds that the consumer offsets are
+     * auto-committed to Kafka if enable.auto.commit is set to true. The option
+     * is a int type.
+     */
+    private Integer autoCommitIntervalMs = 5000;
+    /**
+     * What to do when there is no initial offset in Kafka or if the current
+     * offset does not exist any more on the server (e.g. because that data has
+     * been deleted): earliest: automatically reset the offset to the earliest
+     * offsetlatest: automatically reset the offset to the latest offsetnone:
+     * throw exception to the consumer if no previous offset is found for the
+     * consumer's groupanything else: throw exception to the consumer.
+     */
+    private String autoOffsetReset = "latest";
+    /**
+     * 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.
+     */
+    private Boolean bridgeErrorHandler = false;
+    /**
+     * Automatically check the CRC32 of the records consumed. This ensures no
+     * on-the-wire or on-disk corruption to the messages occurred. This check
+     * adds some overhead, so it may be disabled in cases seeking extreme
+     * performance.
+     */
+    private Boolean checkCrcs = true;
+    /**
+     * A rack identifier for this client. This can be any string value which
+     * indicates where this client is physically located. It corresponds with
+     * the broker config 'broker.rack'
+     */
+    private String clientRack;
+    /**
+     * Specifies the timeout (in milliseconds) for client APIs. This
+     * configuration is used as the default timeout for all client operations
+     * that do not specify a timeout parameter. The option is a int type.
+     */
+    private Integer defaultApiTimeoutMs = 60000;
+    /**
+     * If true the consumer's offset will be periodically committed in the
+     * background.
+     */
+    private Boolean enableAutoCommit = true;
+    /**
+     * Whether internal topics matching a subscribed pattern should be excluded
+     * from the subscription. It is always possible to explicitly subscribe to
+     * an internal topic.
+     */
+    private Boolean excludeInternalTopics = true;
+    /**
+     * The maximum amount of data the server should return for a fetch request.
+     * Records are fetched in batches by the consumer, and if the first record
+     * batch in the first non-empty partition of the fetch is larger than this
+     * value, the record batch will still be returned to ensure that the
+     * consumer can make progress. As such, this is not a absolute maximum. The
+     * maximum record batch size accepted by the broker is defined via
+     * message.max.bytes (broker config) or max.message.bytes (topic config).
+     * Note that the consumer performs multiple fetches in parallel.
+     */
+    private Integer fetchMaxBytes = 52428800;
+    /**
+     * The maximum amount of time the server will block before answering the
+     * fetch request if there isn't sufficient data to immediately satisfy the
+     * requirement given by fetch.min.bytes. The option is a int type.
+     */
+    private Integer fetchMaxWaitMs = 500;
+    /**
+     * The minimum amount of data the server should return for a fetch request.
+     * If insufficient data is available the request will wait for that much
+     * data to accumulate before answering the request. The default setting of 1
+     * byte means that fetch requests are answered as soon as a single byte of
+     * data is available or the fetch request times out waiting for data to
+     * arrive. Setting this to something greater than 1 will cause the server to
+     * wait for larger amounts of data to accumulate which can improve server
+     * throughput a bit at the cost of some additional latency.
+     */
+    private Integer fetchMinBytes = 1;
+    /**
+     * A unique string that identifies the consumer group this consumer belongs
+     * to. This property is required if the consumer uses either the group
+     * management functionality by using subscribe(topic) or the Kafka-based
+     * offset management strategy.
+     */
+    private String groupId;
+    /**
+     * A unique identifier of the consumer instance provided by the end user.
+     * Only non-empty strings are permitted. If set, the consumer is treated as
+     * a static member, which means that only one instance with this ID is
+     * allowed in the consumer group at any time. This can be used in
+     * combination with a larger session timeout to avoid group rebalances
+     * caused by transient unavailability (e.g. process restarts). If not set,
+     * the consumer will join the group as a dynamic member, which is the
+     * traditional behavior.
+     */
+    private String groupInstanceId;
+    /**
+     * The expected time between heartbeats to the consumer coordinator when
+     * using Kafka's group management facilities. Heartbeats are used to ensure
+     * that the consumer's session stays active and to facilitate rebalancing
+     * when new consumers join or leave the group. The value must be set lower
+     * than session.timeout.ms, but typically should be set no higher than 1/3
+     * of that value. It can be adjusted even lower to control the expected time
+     * for normal rebalances. The option is a int type.
+     */
+    private Integer heartbeatIntervalMs = 3000;
+    /**
+     * Controls how to read messages written transactionally. If set to
+     * read_committed, consumer.poll() will only return transactional messages
+     * which have been committed. If set to read_uncommitted' (the default),
+     * consumer.poll() will return all messages, even transactional messages
+     * which have been aborted. Non-transactional messages will be returned
+     * unconditionally in either mode. Messages will always be returned in
+     * offset order. Hence, in read_committed mode, consumer.poll() will only
+     * return messages up to the last stable offset (LSO), which is the one less
+     * than the offset of the first open transaction. In particular any messages
+     * appearing after messages belonging to ongoing transactions will be
+     * withheld until the relevant transaction has been completed. As a result,
+     * read_committed consumers will not be able to read up to the high
+     * watermark when there are in flight transactions. Further, when in
+     * read_committed the seekToEnd method will return the LSO
+     */
+    private String isolationLevel = "read_uncommitted";
+    /**
+     * Deserializer class for key that implements the
+     * org.apache.kafka.common.serialization.Deserializer interface.
+     */
+    private String keyDeserializer = "org.apache.kafka.common.serialization.StringDeserializer";
+    /**
+     * The maximum amount of data per-partition the server will return. Records
+     * are fetched in batches by the consumer. If the first record batch in the
+     * first non-empty partition of the fetch is larger than this limit, the
+     * batch will still be returned to ensure that the consumer can make
+     * progress. The maximum record batch size accepted by the broker is defined
+     * via message.max.bytes (broker config) or max.message.bytes (topic
+     * config). See fetch.max.bytes for limiting the consumer request size.
+     */
+    private Integer maxPartitionFetchBytes = 1048576;
+    /**
+     * The maximum delay between invocations of poll() when using consumer group
+     * management. This places an upper bound on the amount of time that the
+     * consumer can be idle before fetching more records. If poll() is not
+     * called before expiration of this timeout, then the consumer is considered
+     * failed and the group will rebalance in order to reassign the partitions
+     * to another member. For consumers using a non-null group.instance.id which
+     * reach this timeout, partitions will not be immediately reassigned.
+     * Instead, the consumer will stop sending heartbeats and partitions will be
+     * reassigned after expiration of session.timeout.ms. This mirrors the
+     * behavior of a static consumer which has shutdown. The option is a int
+     * type.
+     */
+    private Integer maxPollIntervalMs = 300000;
+    /**
+     * The maximum number of records returned in a single call to poll().
+     */
+    private Integer maxPollRecords = 500;
+    /**
+     * A list of class names or class types, ordered by preference, of supported
+     * partition assignment strategies that the client will use to distribute
+     * partition ownership amongst consumer instances when group management is
+     * used.In addition to the default class specified below, you can use the
+     * org.apache.kafka.clients.consumer.RoundRobinAssignorclass for round robin
+     * assignments of partitions to consumers. Implementing the
+     * org.apache.kafka.clients.consumer.ConsumerPartitionAssignor interface
+     * allows you to plug in a custom assignmentstrategy.
+     */
+    private String partitionAssignmentStrategy = "org.apache.kafka.clients.consumer.RangeAssignor";
+    /**
+     * Set if KafkaConsumer will read from a particular offset on startup. This
+     * config will take precedence over seekTo config
+     */
+    private Long seekToOffset;
+    /**
+     * Set if KafkaConsumer will read from beginning or end on startup:
+     * beginning : read from beginning end : read from end.
+     */
+    private String seekToPosition;
+    /**
+     * The timeout used to detect client failures when using Kafka's group
+     * management facility. The client sends periodic heartbeats to indicate its
+     * liveness to the broker. If no heartbeats are received by the broker
+     * before the expiration of this session timeout, then the broker will
+     * remove this client from the group and initiate a rebalance. Note that the
+     * value must be in the allowable range as configured in the broker
+     * configuration by group.min.session.timeout.ms and
+     * group.max.session.timeout.ms. The option is a int type.
+     */
+    private Integer sessionTimeoutMs = 10000;
+    /**
+     * Deserializer class for value that implements the
+     * org.apache.kafka.common.serialization.Deserializer interface.
+     */
+    private String valueDeserializer = "org.apache.kafka.common.serialization.StringDeserializer";
+    /**
+     * The number of acknowledgments the producer requires the leader to have
+     * received before considering a request complete. This controls the
+     * durability of records that are sent. The following settings are allowed:
+     * acks=0 If set to zero then the producer will not wait for any
+     * acknowledgment from the server at all. The record will be immediately
+     * added to the socket buffer and considered sent. No guarantee can be made
+     * that the server has received the record in this case, and the retries
+     * configuration will not take effect (as the client won't generally know of
+     * any failures). The offset given back for each record will always be set
+     * to -1. acks=1 This will mean the leader will write the record to its
+     * local log but will respond without awaiting full acknowledgement from all
+     * followers. In this case should the leader fail immediately after
+     * acknowledging the record but before the followers have replicated it then
+     * the record will be lost. acks=all This means the leader will wait for the
+     * full set of in-sync replicas to acknowledge the record. This guarantees
+     * that the record will not be lost as long as at least one in-sync replica
+     * remains alive. This is the strongest available guarantee. This is
+     * equivalent to the acks=-1 setting.
+     */
+    private String acks = "1";
+    /**
+     * The producer will attempt to batch records together into fewer requests
+     * whenever multiple records are being sent to the same partition. This
+     * helps performance on both the client and the server. This configuration
+     * controls the default batch size in bytes. No attempt will be made to
+     * batch records larger than this size. Requests sent to brokers will
+     * contain multiple batches, one for each partition with data available to
+     * be sent. A small batch size will make batching less common and may reduce
+     * throughput (a batch size of zero will disable batching entirely). A very
+     * large batch size may use memory a bit more wastefully as we will always
+     * allocate a buffer of the specified batch size in anticipation of
+     * additional records.
+     */
+    private Integer batchSize = 16384;
+    /**
+     * The total bytes of memory the producer can use to buffer records waiting
+     * to be sent to the server. If records are sent faster than they can be
+     * delivered to the server the producer will block for max.block.ms after
+     * which it will throw an exception.This setting should correspond roughly
+     * to the total memory the producer will use, but is not a hard bound since
+     * not all memory the producer uses is used for buffering. Some additional
+     * memory will be used for compression (if compression is enabled) as well
+     * as for maintaining in-flight requests.
+     */
+    private Long bufferMemory = 33554432L;
+    /**
+     * The compression type for all data generated by the producer. The default
+     * is none (i.e. no compression). Valid values are none, gzip, snappy, lz4,
+     * or zstd. Compression is of full batches of data, so the efficacy of
+     * batching will also impact the compression ratio (more batching means
+     * better compression).
+     */
+    private String compressionType = "none";
+    /**
+     * An upper bound on the time to report success or failure after a call to
+     * send() returns. This limits the total time that a record will be delayed
+     * prior to sending, the time to await acknowledgement from the broker (if
+     * expected), and the time allowed for retriable send failures. The producer
+     * may report failure to send a record earlier than this config if either an
+     * unrecoverable error is encountered, the retries have been exhausted, or
+     * the record is added to a batch which reached an earlier delivery
+     * expiration deadline. The value of this config should be greater than or
+     * equal to the sum of request.timeout.ms and linger.ms. The option is a int
+     * type.
+     */
+    private Integer deliveryTimeoutMs = 120000;
+    /**
+     * When set to 'true', the producer will ensure that exactly one copy of
+     * each message is written in the stream. If 'false', producer retries due
+     * to broker failures, etc., may write duplicates of the retried message in
+     * the stream. Note that enabling idempotence requires
+     * max.in.flight.requests.per.connection to be less than or equal to 5,
+     * retries to be greater than 0 and acks must be 'all'. If these values are
+     * not explicitly set by the user, suitable values will be chosen. If
+     * incompatible values are set, a ConfigException will be thrown.
+     */
+    private Boolean enableIdempotence = false;
+    /**
+     * Serializer class for key that implements the
+     * org.apache.kafka.common.serialization.Serializer interface.
+     */
+    private String keySerializer = "org.apache.kafka.common.serialization.StringSerializer";
+    /**
+     * 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.
+     */
+    private Boolean lazyStartProducer = false;
+    /**
+     * The producer groups together any records that arrive in between request
+     * transmissions into a single batched request. Normally this occurs only
+     * under load when records arrive faster than they can be sent out. However
+     * in some circumstances the client may want to reduce the number of
+     * requests even under moderate load. This setting accomplishes this by
+     * adding a small amount of artificial delay&mdash;that is, rather than
+     * immediately sending out a record the producer will wait for up to the
+     * given delay to allow other records to be sent so that the sends can be
+     * batched together. This can be thought of as analogous to Nagle's
+     * algorithm in TCP. This setting gives the upper bound on the delay for
+     * batching: once we get batch.size worth of records for a partition it will
+     * be sent immediately regardless of this setting, however if we have fewer
+     * than this many bytes accumulated for this partition we will 'linger' for
+     * the specified time waiting for more records to show up. This setting
+     * defaults to 0 (i.e. no delay). Setting linger.ms=5, for example, would
+     * have the effect of reducing the number of requests sent but would add up
+     * to 5ms of latency to records sent in the absence of load. The option is a
+     * long type.
+     */
+    private Long lingerMs = 0L;
+    /**
+     * The configuration controls how long KafkaProducer.send() and
+     * KafkaProducer.partitionsFor() will block.These methods can be blocked
+     * either because the buffer is full or metadata unavailable.Blocking in the
+     * user-supplied serializers or partitioner will not be counted against this
+     * timeout. The option is a long type.
+     */
+    private Long maxBlockMs = 60000L;
+    /**
+     * The maximum number of unacknowledged requests the client will send on a
+     * single connection before blocking. Note that if this setting is set to be
+     * greater than 1 and there are failed sends, there is a risk of message
+     * re-ordering due to retries (i.e., if retries are enabled).
+     */
+    private Integer maxInFlightRequestsPerConnection = 5;
+    /**
+     * The maximum size of a request in bytes. This setting will limit the
+     * number of record batches the producer will send in a single request to
+     * avoid sending huge requests. This is also effectively a cap on the
+     * maximum uncompressed record batch size. Note that the server has its own
+     * cap on the record batch size (after compression if compression is
+     * enabled) which may be different from this.
+     */
+    private Integer maxRequestSize = 1048576;
+    /**
+     * Controls how long the producer will cache metadata for a topic that's
+     * idle. If the elapsed time since a topic was last produced to exceeds the
+     * metadata idle duration, then the topic's metadata is forgotten and the
+     * next access to it will force a metadata fetch request. The option is a
+     * long type.
+     */
+    private Long metadataMaxIdleMs = 300000L;
+    /**
+     * Partitioner class that implements the
+     * org.apache.kafka.clients.producer.Partitioner interface.
+     */
+    private String partitionerClass = "org.apache.kafka.clients.producer.internals.DefaultPartitioner";
+    /**
+     * Setting a value greater than zero will cause the client to resend any
+     * record whose send fails with a potentially transient error. Note that
+     * this retry is no different than if the client resent the record upon
+     * receiving the error. Allowing retries without setting
+     * max.in.flight.requests.per.connection to 1 will potentially change the
+     * ordering of records because if two batches are sent to a single
+     * partition, and the first fails and is retried but the second succeeds,
+     * then the records in the second batch may appear first. Note additionally
+     * that produce requests will be failed before the number of retries has
+     * been exhausted if the timeout configured by delivery.timeout.ms expires
+     * first before successful acknowledgement. Users should generally prefer to
+     * leave this config unset and instead use delivery.timeout.ms to control
+     * retry behavior.
+     */
+    private Integer retries = 2147483647;
+    /**
+     * The TransactionalId to use for transactional delivery. This enables
+     * reliability semantics which span multiple producer sessions since it
+     * allows the client to guarantee that transactions using the same
+     * TransactionalId have been completed prior to starting any new
+     * transactions. If no TransactionalId is provided, then the producer is
+     * limited to idempotent delivery. If a TransactionalId is configured,
+     * enable.idempotence is implied. By default the TransactionId is not
+     * configured, which means transactions cannot be used. Note that, by
+     * default, transactions require a cluster of at least three brokers which
+     * is the recommended setting for production; for development you can change
+     * this, by adjusting broker setting
+     * transaction.state.log.replication.factor.
+     */
+    private String transactionalId;
+    /**
+     * The maximum amount of time in ms that the transaction coordinator will
+     * wait for a transaction status update from the producer before proactively
+     * aborting the ongoing transaction.If this value is larger than the
+     * transaction.max.timeout.ms setting in the broker, the request will fail
+     * with a InvalidTransactionTimeout error. The option is a int type.
+     */
+    private Integer transactionTimeoutMs = 60000;
+    /**
+     * Serializer class for value that implements the
+     * org.apache.kafka.common.serialization.Serializer interface.
+     */
+    private String valueSerializer = "org.apache.kafka.common.serialization.StringSerializer";
+    /**
+     * Whether autowiring is enabled. This is used for automatic autowiring
+     * options (the option must be marked as autowired) by looking up in the
+     * registry to find if there is a single instance of matching type, which
+     * then gets configured on the component. This can be used for automatic
+     * configuring JDBC data sources, JMS connection factories, AWS Clients,
+     * etc.
+     */
+    private Boolean autowiredEnabled = true;
+    /**
+     * To use an existing vertx instead of creating a new instance. The option
+     * is a io.vertx.core.Vertx type.
+     */
+    private Vertx vertx;
+    /**
+     * To provide a custom set of vertx options for configuring vertx. The
+     * option is a io.vertx.core.VertxOptions type.
+     */
+    private VertxOptions vertxOptions;
+    /**
+     * The fully qualified name of a SASL client callback handler class that
+     * implements the AuthenticateCallbackHandler interface.
+     */
+    private String saslClientCallbackHandlerClass;
+    /**
+     * JAAS login context parameters for SASL connections in the format used by
+     * JAAS configuration files. JAAS configuration file format is described
+     * here. The format for the value is: 'loginModuleClass controlFlag
+     * (optionName=optionValue);'. For brokers, the config must be prefixed with
+     * listener prefix and SASL mechanism name in lower-case. For example,
+     * listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=com.example.ScramLoginModule required;
+     */
+    private String saslJaasConfig;
+    /**
+     * Kerberos kinit command path.
+     */
+    private String saslKerberosKinitCmd = "/usr/bin/kinit";
+    /**
+     * Login thread sleep time between refresh attempts.
+     */
+    private Long saslKerberosMinTimeBeforeRelogin = 60000L;
+    /**
+     * The Kerberos principal name that Kafka runs as. This can be defined
+     * either in Kafka's JAAS config or in Kafka's config.
+     */
+    private String saslKerberosServiceName;
+    /**
+     * Percentage of random jitter added to the renewal time.
+     */
+    private Double saslKerberosTicketRenewJitter;
+    /**
+     * Login thread will sleep until the specified window factor of time from
+     * last refresh to ticket's expiry has been reached, at which time it will
+     * try to renew the ticket.
+     */
+    private Double saslKerberosTicketRenewWindowFactor;
+    /**
+     * The fully qualified name of a SASL login callback handler class that
+     * implements the AuthenticateCallbackHandler interface. For brokers, login
+     * callback handler config must be prefixed with listener prefix and SASL
+     * mechanism name in lower-case. For example,
+     * listener.name.sasl_ssl.scram-sha-256.sasl.login.callback.handler.class=com.example.CustomScramLoginCallbackHandler
+     */
+    private String saslLoginCallbackHandlerClass;
+    /**
+     * The fully qualified name of a class that implements the Login interface.
+     * For brokers, login config must be prefixed with listener prefix and SASL
+     * mechanism name in lower-case. For example,
+     * listener.name.sasl_ssl.scram-sha-256.sasl.login.class=com.example.CustomScramLogin
+     */
+    private String saslLoginClass;
+    /**
+     * The amount of buffer time before credential expiration to maintain when
+     * refreshing a credential, in seconds. If a refresh would otherwise occur
+     * closer to expiration than the number of buffer seconds then the refresh
+     * will be moved up to maintain as much of the buffer time as possible.
+     * Legal values are between 0 and 3600 (1 hour); a default value of 300 (5
+     * minutes) is used if no value is specified. This value and
+     * sasl.login.refresh.min.period.seconds are both ignored if their sum
+     * exceeds the remaining lifetime of a credential. Currently applies only to
+     * OAUTHBEARER.
+     */
+    private Short saslLoginRefreshBufferSeconds = 300;
+    /**
+     * The desired minimum time for the login refresh thread to wait before
+     * refreshing a credential, in seconds. Legal values are between 0 and 900
+     * (15 minutes); a default value of 60 (1 minute) is used if no value is
+     * specified. This value and sasl.login.refresh.buffer.seconds are both
+     * ignored if their sum exceeds the remaining lifetime of a credential.
+     * Currently applies only to OAUTHBEARER.
+     */
+    private Short saslLoginRefreshMinPeriodSeconds = 60;
+    /**
+     * Login refresh thread will sleep until the specified window factor
+     * relative to the credential's lifetime has been reached, at which time it
+     * will try to refresh the credential. Legal values are between 0.5 (50%)
+     * and 1.0 (100%) inclusive; a default value of 0.8 (80%) is used if no
+     * value is specified. Currently applies only to OAUTHBEARER.
+     */
+    private Double saslLoginRefreshWindowFactor;
+    /**
+     * The maximum amount of random jitter relative to the credential's lifetime
+     * that is added to the login refresh thread's sleep time. Legal values are
+     * between 0 and 0.25 (25%) inclusive; a default value of 0.05 (5%) is used
+     * if no value is specified. Currently applies only to OAUTHBEARER.
+     */
+    private Double saslLoginRefreshWindowJitter;
+    /**
+     * SASL mechanism used for client connections. This may be any mechanism for
+     * which a security provider is available. GSSAPI is the default mechanism.
+     */
+    private String saslMechanism = "GSSAPI";
+    /**
+     * Protocol used to communicate with brokers. Valid values are: PLAINTEXT,
+     * SSL, SASL_PLAINTEXT, SASL_SSL.
+     */
+    private String securityProtocol = "PLAINTEXT";
+    /**
+     * A list of configurable creator classes each returning a provider
+     * implementing security algorithms. These classes should implement the
+     * org.apache.kafka.common.security.auth.SecurityProviderCreator interface.
+     */
+    private String securityProviders;
+    /**
+     * A list of cipher suites. This is a named combination of authentication,
+     * encryption, MAC and key exchange algorithm used to negotiate the security
+     * settings for a network connection using TLS or SSL network protocol. By
+     * default all the available cipher suites are supported.
+     */
+    private String sslCipherSuites;
+    /**
+     * The list of protocols enabled for SSL connections. The default is
+     * 'TLSv1.2,TLSv1.3' when running with Java 11 or newer, 'TLSv1.2'
+     * otherwise. With the default value for Java 11, clients and servers will
+     * prefer TLSv1.3 if both support it and fallback to TLSv1.2 otherwise
+     * (assuming both support at least TLSv1.2). This default should be fine for
+     * most cases. Also see the config documentation for ssl.protocol.
+     */
+    private String sslEnabledProtocols = "TLSv1.2,TLSv1.3";
+    /**
+     * The endpoint identification algorithm to validate server hostname using
+     * server certificate.
+     */
+    private String sslEndpointIdentificationAlgorithm = "https";
+    /**
+     * The class of type org.apache.kafka.common.security.auth.SslEngineFactory
+     * to provide SSLEngine objects. Default value is
+     * org.apache.kafka.common.security.ssl.DefaultSslEngineFactory
+     */
+    private String sslEngineFactoryClass;
+    /**
+     * The algorithm used by key manager factory for SSL connections. Default
+     * value is the key manager factory algorithm configured for the Java
+     * Virtual Machine.
+     */
+    private String sslKeymanagerAlgorithm = "SunX509";
+    /**
+     * The password of the private key in the key store file. This is optional
+     * for client.
+     */
+    private String sslKeyPassword;
+    /**
+     * The location of the key store file. This is optional for client and can
+     * be used for two-way authentication for client.
+     */
+    private String sslKeystoreLocation;
+    /**
+     * The store password for the key store file. This is optional for client
+     * and only needed if ssl.keystore.location is configured.
+     */
+    private String sslKeystorePassword;
+    /**
+     * The file format of the key store file. This is optional for client.
+     */
+    private String sslKeystoreType = "JKS";
+    /**
+     * The SSL protocol used to generate the SSLContext. The default is
+     * 'TLSv1.3' when running with Java 11 or newer, 'TLSv1.2' otherwise. This
+     * value should be fine for most use cases. Allowed values in recent JVMs
+     * are 'TLSv1.2' and 'TLSv1.3'. 'TLS', 'TLSv1.1', 'SSL', 'SSLv2' and 'SSLv3'
+     * may be supported in older JVMs, but their usage is discouraged due to
+     * known security vulnerabilities. With the default value for this config
+     * and 'ssl.enabled.protocols', clients will downgrade to 'TLSv1.2' if the
+     * server does not support 'TLSv1.3'. If this config is set to 'TLSv1.2',
+     * clients will not use 'TLSv1.3' even if it is one of the values in
+     * ssl.enabled.protocols and the server only supports 'TLSv1.3'.
+     */
+    private String sslProtocol = "TLSv1.3";
+    /**
+     * The name of the security provider used for SSL connections. Default value
+     * is the default security provider of the JVM.
+     */
+    private String sslProvider;
+    /**
+     * The SecureRandom PRNG implementation to use for SSL cryptography
+     * operations.
+     */
+    private String sslSecureRandomImplementation;
+    /**
+     * The algorithm used by trust manager factory for SSL connections. Default
+     * value is the trust manager factory algorithm configured for the Java
+     * Virtual Machine.
+     */
+    private String sslTrustmanagerAlgorithm = "PKIX";
+    /**
+     * The location of the trust store file.
+     */
+    private String sslTruststoreLocation;
+    /**
+     * The password for the trust store file. If a password is not set access to
+     * the truststore is still available, but integrity checking is disabled.
+     */
+    private String sslTruststorePassword;
+    /**
+     * The file format of the trust store file.
+     */
+    private String sslTruststoreType = "JKS";
+
+    public Map<String, Object> getAdditionalProperties() {
+        return additionalProperties;
+    }
+
+    public void setAdditionalProperties(Map<String, Object> additionalProperties) {
+        this.additionalProperties = additionalProperties;
+    }
+
+    public String getBootstrapServers() {
+        return bootstrapServers;
+    }
+
+    public void setBootstrapServers(String bootstrapServers) {
+        this.bootstrapServers = bootstrapServers;
+    }
+
+    public String getClientDnsLookup() {
+        return clientDnsLookup;
+    }
+
+    public void setClientDnsLookup(String clientDnsLookup) {
+        this.clientDnsLookup = clientDnsLookup;
+    }
+
+    public String getClientId() {
+        return clientId;
+    }
+
+    public void setClientId(String clientId) {
+        this.clientId = clientId;
+    }
+
+    public VertxKafkaConfiguration getConfiguration() {
+        return configuration;
+    }
+
+    public void setConfiguration(VertxKafkaConfiguration configuration) {
+        this.configuration = configuration;
+    }
+
+    public Long getConnectionsMaxIdleMs() {
+        return connectionsMaxIdleMs;
+    }
+
+    public void setConnectionsMaxIdleMs(Long connectionsMaxIdleMs) {
+        this.connectionsMaxIdleMs = connectionsMaxIdleMs;
+    }
+
+    public HeaderFilterStrategy getHeaderFilterStrategy() {
+        return headerFilterStrategy;
+    }
+
+    public void setHeaderFilterStrategy(
+            HeaderFilterStrategy headerFilterStrategy) {
+        this.headerFilterStrategy = headerFilterStrategy;
+    }
+
+    public String getInterceptorClasses() {
+        return interceptorClasses;
+    }
+
+    public void setInterceptorClasses(String interceptorClasses) {
+        this.interceptorClasses = interceptorClasses;
+    }
+
+    public Long getMetadataMaxAgeMs() {
+        return metadataMaxAgeMs;
+    }
+
+    public void setMetadataMaxAgeMs(Long metadataMaxAgeMs) {
+        this.metadataMaxAgeMs = metadataMaxAgeMs;
+    }
+
+    public String getMetricReporters() {
+        return metricReporters;
+    }
+
+    public void setMetricReporters(String metricReporters) {
+        this.metricReporters = metricReporters;
+    }
+
+    public Integer getMetricsNumSamples() {
+        return metricsNumSamples;
+    }
+
+    public void setMetricsNumSamples(Integer metricsNumSamples) {
+        this.metricsNumSamples = metricsNumSamples;
+    }
+
+    public String getMetricsRecordingLevel() {
+        return metricsRecordingLevel;
+    }
+
+    public void setMetricsRecordingLevel(String metricsRecordingLevel) {
+        this.metricsRecordingLevel = metricsRecordingLevel;
+    }
+
+    public Long getMetricsSampleWindowMs() {
+        return metricsSampleWindowMs;
+    }
+
+    public void setMetricsSampleWindowMs(Long metricsSampleWindowMs) {
+        this.metricsSampleWindowMs = metricsSampleWindowMs;
+    }
+
+    public Integer getPartitionId() {
+        return partitionId;
+    }
+
+    public void setPartitionId(Integer partitionId) {
+        this.partitionId = partitionId;
+    }
+
+    public Integer getReceiveBufferBytes() {
+        return receiveBufferBytes;
+    }
+
+    public void setReceiveBufferBytes(Integer receiveBufferBytes) {
+        this.receiveBufferBytes = receiveBufferBytes;
+    }
+
+    public Long getReconnectBackoffMaxMs() {
+        return reconnectBackoffMaxMs;
+    }
+
+    public void setReconnectBackoffMaxMs(Long reconnectBackoffMaxMs) {
+        this.reconnectBackoffMaxMs = reconnectBackoffMaxMs;
+    }
+
+    public Long getReconnectBackoffMs() {
+        return reconnectBackoffMs;
+    }
+
+    public void setReconnectBackoffMs(Long reconnectBackoffMs) {
+        this.reconnectBackoffMs = reconnectBackoffMs;
+    }
+
+    public Integer getRequestTimeoutMs() {
+        return requestTimeoutMs;
+    }
+
+    public void setRequestTimeoutMs(Integer requestTimeoutMs) {
+        this.requestTimeoutMs = requestTimeoutMs;
+    }
+
+    public Long getRetryBackoffMs() {
+        return retryBackoffMs;
+    }
+
+    public void setRetryBackoffMs(Long retryBackoffMs) {
+        this.retryBackoffMs = retryBackoffMs;
+    }
+
+    public Integer getSendBufferBytes() {
+        return sendBufferBytes;
+    }
+
+    public void setSendBufferBytes(Integer sendBufferBytes) {
+        this.sendBufferBytes = sendBufferBytes;
+    }
+
+    public Boolean getAllowAutoCreateTopics() {
+        return allowAutoCreateTopics;
+    }
+
+    public void setAllowAutoCreateTopics(Boolean allowAutoCreateTopics) {
+        this.allowAutoCreateTopics = allowAutoCreateTopics;
+    }
+
+    public Integer getAutoCommitIntervalMs() {
+        return autoCommitIntervalMs;
+    }
+
+    public void setAutoCommitIntervalMs(Integer autoCommitIntervalMs) {
+        this.autoCommitIntervalMs = autoCommitIntervalMs;
+    }
+
+    public String getAutoOffsetReset() {
+        return autoOffsetReset;
+    }
+
+    public void setAutoOffsetReset(String autoOffsetReset) {
+        this.autoOffsetReset = autoOffsetReset;
+    }
+
+    public Boolean getBridgeErrorHandler() {
+        return bridgeErrorHandler;
+    }
+
+    public void setBridgeErrorHandler(Boolean bridgeErrorHandler) {
+        this.bridgeErrorHandler = bridgeErrorHandler;
+    }
+
+    public Boolean getCheckCrcs() {
+        return checkCrcs;
+    }
+
+    public void setCheckCrcs(Boolean checkCrcs) {
+        this.checkCrcs = checkCrcs;
+    }
+
+    public String getClientRack() {
+        return clientRack;
+    }
+
+    public void setClientRack(String clientRack) {
+        this.clientRack = clientRack;
+    }
+
+    public Integer getDefaultApiTimeoutMs() {
+        return defaultApiTimeoutMs;
+    }
+
+    public void setDefaultApiTimeoutMs(Integer defaultApiTimeoutMs) {
+        this.defaultApiTimeoutMs = defaultApiTimeoutMs;
+    }
+
+    public Boolean getEnableAutoCommit() {
+        return enableAutoCommit;
+    }
+
+    public void setEnableAutoCommit(Boolean enableAutoCommit) {
+        this.enableAutoCommit = enableAutoCommit;
+    }
+
+    public Boolean getExcludeInternalTopics() {
+        return excludeInternalTopics;
+    }
+
+    public void setExcludeInternalTopics(Boolean excludeInternalTopics) {
+        this.excludeInternalTopics = excludeInternalTopics;
+    }
+
+    public Integer getFetchMaxBytes() {
+        return fetchMaxBytes;
+    }
+
+    public void setFetchMaxBytes(Integer fetchMaxBytes) {
+        this.fetchMaxBytes = fetchMaxBytes;
+    }
+
+    public Integer getFetchMaxWaitMs() {
+        return fetchMaxWaitMs;
+    }
+
+    public void setFetchMaxWaitMs(Integer fetchMaxWaitMs) {
+        this.fetchMaxWaitMs = fetchMaxWaitMs;
+    }
+
+    public Integer getFetchMinBytes() {
+        return fetchMinBytes;
+    }
+
+    public void setFetchMinBytes(Integer fetchMinBytes) {
+        this.fetchMinBytes = fetchMinBytes;
+    }
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(String groupId) {
+        this.groupId = groupId;
+    }
+
+    public String getGroupInstanceId() {
+        return groupInstanceId;
+    }
+
+    public void setGroupInstanceId(String groupInstanceId) {
+        this.groupInstanceId = groupInstanceId;
+    }
+
+    public Integer getHeartbeatIntervalMs() {
+        return heartbeatIntervalMs;
+    }
+
+    public void setHeartbeatIntervalMs(Integer heartbeatIntervalMs) {
+        this.heartbeatIntervalMs = heartbeatIntervalMs;
+    }
+
+    public String getIsolationLevel() {
+        return isolationLevel;
+    }
+
+    public void setIsolationLevel(String isolationLevel) {
+        this.isolationLevel = isolationLevel;
+    }
+
+    public String getKeyDeserializer() {
+        return keyDeserializer;
+    }
+
+    public void setKeyDeserializer(String keyDeserializer) {
+        this.keyDeserializer = keyDeserializer;
+    }
+
+    public Integer getMaxPartitionFetchBytes() {
+        return maxPartitionFetchBytes;
+    }
+
+    public void setMaxPartitionFetchBytes(Integer maxPartitionFetchBytes) {
+        this.maxPartitionFetchBytes = maxPartitionFetchBytes;
+    }
+
+    public Integer getMaxPollIntervalMs() {
+        return maxPollIntervalMs;
+    }
+
+    public void setMaxPollIntervalMs(Integer maxPollIntervalMs) {
+        this.maxPollIntervalMs = maxPollIntervalMs;
+    }
+
+    public Integer getMaxPollRecords() {
+        return maxPollRecords;
+    }
+
+    public void setMaxPollRecords(Integer maxPollRecords) {
+        this.maxPollRecords = maxPollRecords;
+    }
+
+    public String getPartitionAssignmentStrategy() {
+        return partitionAssignmentStrategy;
+    }
+
+    public void setPartitionAssignmentStrategy(
+            String partitionAssignmentStrategy) {
+        this.partitionAssignmentStrategy = partitionAssignmentStrategy;
+    }
+
+    public Long getSeekToOffset() {
+        return seekToOffset;
+    }
+
+    public void setSeekToOffset(Long seekToOffset) {
+        this.seekToOffset = seekToOffset;
+    }
+
+    public String getSeekToPosition() {
+        return seekToPosition;
+    }
+
+    public void setSeekToPosition(String seekToPosition) {
+        this.seekToPosition = seekToPosition;
+    }
+
+    public Integer getSessionTimeoutMs() {
+        return sessionTimeoutMs;
+    }
+
+    public void setSessionTimeoutMs(Integer sessionTimeoutMs) {
+        this.sessionTimeoutMs = sessionTimeoutMs;
+    }
+
+    public String getValueDeserializer() {
+        return valueDeserializer;
+    }
+
+    public void setValueDeserializer(String valueDeserializer) {
+        this.valueDeserializer = valueDeserializer;
+    }
+
+    public String getAcks() {
+        return acks;
+    }
+
+    public void setAcks(String acks) {
+        this.acks = acks;
+    }
+
+    public Integer getBatchSize() {
+        return batchSize;
+    }
+
+    public void setBatchSize(Integer batchSize) {
+        this.batchSize = batchSize;
+    }
+
+    public Long getBufferMemory() {
+        return bufferMemory;
+    }
+
+    public void setBufferMemory(Long bufferMemory) {
+        this.bufferMemory = bufferMemory;
+    }
+
+    public String getCompressionType() {
+        return compressionType;
+    }
+
+    public void setCompressionType(String compressionType) {
+        this.compressionType = compressionType;
+    }
+
+    public Integer getDeliveryTimeoutMs() {
+        return deliveryTimeoutMs;
+    }
+
+    public void setDeliveryTimeoutMs(Integer deliveryTimeoutMs) {
+        this.deliveryTimeoutMs = deliveryTimeoutMs;
+    }
+
+    public Boolean getEnableIdempotence() {
+        return enableIdempotence;
+    }
+
+    public void setEnableIdempotence(Boolean enableIdempotence) {
+        this.enableIdempotence = enableIdempotence;
+    }
+
+    public String getKeySerializer() {
+        return keySerializer;
+    }
+
+    public void setKeySerializer(String keySerializer) {
+        this.keySerializer = keySerializer;
+    }
+
+    public Boolean getLazyStartProducer() {
+        return lazyStartProducer;
+    }
+
+    public void setLazyStartProducer(Boolean lazyStartProducer) {
+        this.lazyStartProducer = lazyStartProducer;
+    }
+
+    public Long getLingerMs() {
+        return lingerMs;
+    }
+
+    public void setLingerMs(Long lingerMs) {
+        this.lingerMs = lingerMs;
+    }
+
+    public Long getMaxBlockMs() {
+        return maxBlockMs;
+    }
+
+    public void setMaxBlockMs(Long maxBlockMs) {
+        this.maxBlockMs = maxBlockMs;
+    }
+
+    public Integer getMaxInFlightRequestsPerConnection() {
+        return maxInFlightRequestsPerConnection;
+    }
+
+    public void setMaxInFlightRequestsPerConnection(
+            Integer maxInFlightRequestsPerConnection) {
+        this.maxInFlightRequestsPerConnection = maxInFlightRequestsPerConnection;
+    }
+
+    public Integer getMaxRequestSize() {
+        return maxRequestSize;
+    }
+
+    public void setMaxRequestSize(Integer maxRequestSize) {
+        this.maxRequestSize = maxRequestSize;
+    }
+
+    public Long getMetadataMaxIdleMs() {
+        return metadataMaxIdleMs;
+    }
+
+    public void setMetadataMaxIdleMs(Long metadataMaxIdleMs) {
+        this.metadataMaxIdleMs = metadataMaxIdleMs;
+    }
+
+    public String getPartitionerClass() {
+        return partitionerClass;
+    }
+
+    public void setPartitionerClass(String partitionerClass) {
+        this.partitionerClass = partitionerClass;
+    }
+
+    public Integer getRetries() {
+        return retries;
+    }
+
+    public void setRetries(Integer retries) {
+        this.retries = retries;
+    }
+
+    public String getTransactionalId() {
+        return transactionalId;
+    }
+
+    public void setTransactionalId(String transactionalId) {
+        this.transactionalId = transactionalId;
+    }
+
+    public Integer getTransactionTimeoutMs() {
+        return transactionTimeoutMs;
+    }
+
+    public void setTransactionTimeoutMs(Integer transactionTimeoutMs) {
+        this.transactionTimeoutMs = transactionTimeoutMs;
+    }
+
+    public String getValueSerializer() {
+        return valueSerializer;
+    }
+
+    public void setValueSerializer(String valueSerializer) {
+        this.valueSerializer = valueSerializer;
+    }
+
+    public Boolean getAutowiredEnabled() {
+        return autowiredEnabled;
+    }
+
+    public void setAutowiredEnabled(Boolean autowiredEnabled) {
+        this.autowiredEnabled = autowiredEnabled;
+    }
+
+    public Vertx getVertx() {
+        return vertx;
+    }
+
+    public void setVertx(Vertx vertx) {
+        this.vertx = vertx;
+    }
+
+    public VertxOptions getVertxOptions() {
+        return vertxOptions;
+    }
+
+    public void setVertxOptions(VertxOptions vertxOptions) {
+        this.vertxOptions = vertxOptions;
+    }
+
+    public String getSaslClientCallbackHandlerClass() {
+        return saslClientCallbackHandlerClass;
+    }
+
+    public void setSaslClientCallbackHandlerClass(
+            String saslClientCallbackHandlerClass) {
+        this.saslClientCallbackHandlerClass = saslClientCallbackHandlerClass;
+    }
+
+    public String getSaslJaasConfig() {
+        return saslJaasConfig;
+    }
+
+    public void setSaslJaasConfig(String saslJaasConfig) {
+        this.saslJaasConfig = saslJaasConfig;
+    }
+
+    public String getSaslKerberosKinitCmd() {
+        return saslKerberosKinitCmd;
+    }
+
+    public void setSaslKerberosKinitCmd(String saslKerberosKinitCmd) {
+        this.saslKerberosKinitCmd = saslKerberosKinitCmd;
+    }
+
+    public Long getSaslKerberosMinTimeBeforeRelogin() {
+        return saslKerberosMinTimeBeforeRelogin;
+    }
+
+    public void setSaslKerberosMinTimeBeforeRelogin(
+            Long saslKerberosMinTimeBeforeRelogin) {
+        this.saslKerberosMinTimeBeforeRelogin = saslKerberosMinTimeBeforeRelogin;
+    }
+
+    public String getSaslKerberosServiceName() {
+        return saslKerberosServiceName;
+    }
+
+    public void setSaslKerberosServiceName(String saslKerberosServiceName) {
+        this.saslKerberosServiceName = saslKerberosServiceName;
+    }
+
+    public Double getSaslKerberosTicketRenewJitter() {
+        return saslKerberosTicketRenewJitter;
+    }
+
+    public void setSaslKerberosTicketRenewJitter(
+            Double saslKerberosTicketRenewJitter) {
+        this.saslKerberosTicketRenewJitter = saslKerberosTicketRenewJitter;
+    }
+
+    public Double getSaslKerberosTicketRenewWindowFactor() {
+        return saslKerberosTicketRenewWindowFactor;
+    }
+
+    public void setSaslKerberosTicketRenewWindowFactor(
+            Double saslKerberosTicketRenewWindowFactor) {
+        this.saslKerberosTicketRenewWindowFactor = saslKerberosTicketRenewWindowFactor;
+    }
+
+    public String getSaslLoginCallbackHandlerClass() {
+        return saslLoginCallbackHandlerClass;
+    }
+
+    public void setSaslLoginCallbackHandlerClass(
+            String saslLoginCallbackHandlerClass) {
+        this.saslLoginCallbackHandlerClass = saslLoginCallbackHandlerClass;
+    }
+
+    public String getSaslLoginClass() {
+        return saslLoginClass;
+    }
+
+    public void setSaslLoginClass(String saslLoginClass) {
+        this.saslLoginClass = saslLoginClass;
+    }
+
+    public Short getSaslLoginRefreshBufferSeconds() {
+        return saslLoginRefreshBufferSeconds;
+    }
+
+    public void setSaslLoginRefreshBufferSeconds(
+            Short saslLoginRefreshBufferSeconds) {
+        this.saslLoginRefreshBufferSeconds = saslLoginRefreshBufferSeconds;
+    }
+
+    public Short getSaslLoginRefreshMinPeriodSeconds() {
+        return saslLoginRefreshMinPeriodSeconds;
+    }
+
+    public void setSaslLoginRefreshMinPeriodSeconds(
+            Short saslLoginRefreshMinPeriodSeconds) {
+        this.saslLoginRefreshMinPeriodSeconds = saslLoginRefreshMinPeriodSeconds;
+    }
+
+    public Double getSaslLoginRefreshWindowFactor() {
+        return saslLoginRefreshWindowFactor;
+    }
+
+    public void setSaslLoginRefreshWindowFactor(
+            Double saslLoginRefreshWindowFactor) {
+        this.saslLoginRefreshWindowFactor = saslLoginRefreshWindowFactor;
+    }
+
+    public Double getSaslLoginRefreshWindowJitter() {
+        return saslLoginRefreshWindowJitter;
+    }
+
+    public void setSaslLoginRefreshWindowJitter(
+            Double saslLoginRefreshWindowJitter) {
+        this.saslLoginRefreshWindowJitter = saslLoginRefreshWindowJitter;
+    }
+
+    public String getSaslMechanism() {
+        return saslMechanism;
+    }
+
+    public void setSaslMechanism(String saslMechanism) {
+        this.saslMechanism = saslMechanism;
+    }
+
+    public String getSecurityProtocol() {
+        return securityProtocol;
+    }
+
+    public void setSecurityProtocol(String securityProtocol) {
+        this.securityProtocol = securityProtocol;
+    }
+
+    public String getSecurityProviders() {
+        return securityProviders;
+    }
+
+    public void setSecurityProviders(String securityProviders) {
+        this.securityProviders = securityProviders;
+    }
+
+    public String getSslCipherSuites() {
+        return sslCipherSuites;
+    }
+
+    public void setSslCipherSuites(String sslCipherSuites) {
+        this.sslCipherSuites = sslCipherSuites;
+    }
+
+    public String getSslEnabledProtocols() {
+        return sslEnabledProtocols;
+    }
+
+    public void setSslEnabledProtocols(String sslEnabledProtocols) {
+        this.sslEnabledProtocols = sslEnabledProtocols;
+    }
+
+    public String getSslEndpointIdentificationAlgorithm() {
+        return sslEndpointIdentificationAlgorithm;
+    }
+
+    public void setSslEndpointIdentificationAlgorithm(
+            String sslEndpointIdentificationAlgorithm) {
+        this.sslEndpointIdentificationAlgorithm = sslEndpointIdentificationAlgorithm;
+    }
+
+    public String getSslEngineFactoryClass() {
+        return sslEngineFactoryClass;
+    }
+
+    public void setSslEngineFactoryClass(String sslEngineFactoryClass) {
+        this.sslEngineFactoryClass = sslEngineFactoryClass;
+    }
+
+    public String getSslKeymanagerAlgorithm() {
+        return sslKeymanagerAlgorithm;
+    }
+
+    public void setSslKeymanagerAlgorithm(String sslKeymanagerAlgorithm) {
+        this.sslKeymanagerAlgorithm = sslKeymanagerAlgorithm;
+    }
+
+    public String getSslKeyPassword() {
+        return sslKeyPassword;
+    }
+
+    public void setSslKeyPassword(String sslKeyPassword) {
+        this.sslKeyPassword = sslKeyPassword;
+    }
+
+    public String getSslKeystoreLocation() {
+        return sslKeystoreLocation;
+    }
+
+    public void setSslKeystoreLocation(String sslKeystoreLocation) {
+        this.sslKeystoreLocation = sslKeystoreLocation;
+    }
+
+    public String getSslKeystorePassword() {
+        return sslKeystorePassword;
+    }
+
+    public void setSslKeystorePassword(String sslKeystorePassword) {
+        this.sslKeystorePassword = sslKeystorePassword;
+    }
+
+    public String getSslKeystoreType() {
+        return sslKeystoreType;
+    }
+
+    public void setSslKeystoreType(String sslKeystoreType) {
+        this.sslKeystoreType = sslKeystoreType;
+    }
+
+    public String getSslProtocol() {
+        return sslProtocol;
+    }
+
+    public void setSslProtocol(String sslProtocol) {
+        this.sslProtocol = sslProtocol;
+    }
+
+    public String getSslProvider() {
+        return sslProvider;
+    }
+
+    public void setSslProvider(String sslProvider) {
+        this.sslProvider = sslProvider;
+    }
+
+    public String getSslSecureRandomImplementation() {
+        return sslSecureRandomImplementation;
+    }
+
+    public void setSslSecureRandomImplementation(
+            String sslSecureRandomImplementation) {
+        this.sslSecureRandomImplementation = sslSecureRandomImplementation;
+    }
+
+    public String getSslTrustmanagerAlgorithm() {
+        return sslTrustmanagerAlgorithm;
+    }
+
+    public void setSslTrustmanagerAlgorithm(String sslTrustmanagerAlgorithm) {
+        this.sslTrustmanagerAlgorithm = sslTrustmanagerAlgorithm;
+    }
+
+    public String getSslTruststoreLocation() {
+        return sslTruststoreLocation;
+    }
+
+    public void setSslTruststoreLocation(String sslTruststoreLocation) {
+        this.sslTruststoreLocation = sslTruststoreLocation;
+    }
+
+    public String getSslTruststorePassword() {
+        return sslTruststorePassword;
+    }
+
+    public void setSslTruststorePassword(String sslTruststorePassword) {
+        this.sslTruststorePassword = sslTruststorePassword;
+    }
+
+    public String getSslTruststoreType() {
+        return sslTruststoreType;
+    }
+
+    public void setSslTruststoreType(String sslTruststoreType) {
+        this.sslTruststoreType = sslTruststoreType;
+    }
+}
\ No newline at end of file
diff --git a/components-starter/camel-vertx-kafka-starter/src/main/java/org/apache/camel/component/vertx/kafka/springboot/VertxKafkaComponentConverter.java b/components-starter/camel-vertx-kafka-starter/src/main/java/org/apache/camel/component/vertx/kafka/springboot/VertxKafkaComponentConverter.java
new file mode 100644
index 0000000..43a71b7
--- /dev/null
+++ b/components-starter/camel-vertx-kafka-starter/src/main/java/org/apache/camel/component/vertx/kafka/springboot/VertxKafkaComponentConverter.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.vertx.kafka.springboot;
+
+import java.util.LinkedHashSet;
+import java.util.Set;
+import javax.annotation.Generated;
+import org.apache.camel.CamelContext;
+import org.springframework.core.convert.TypeDescriptor;
+import org.springframework.core.convert.converter.GenericConverter;
+
+/**
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.springboot.maven.SpringBootAutoConfigurationMojo")
+public class VertxKafkaComponentConverter
+        implements
+            org.springframework.core.convert.converter.GenericConverter {
+
+    private final CamelContext camelContext;
+
+    public VertxKafkaComponentConverter(
+            org.apache.camel.CamelContext camelContext) {
+        this.camelContext = camelContext;
+    }
+
+    public Set<ConvertiblePair> getConvertibleTypes() {
+        Set<ConvertiblePair> answer = new LinkedHashSet<>();
+        answer.add(new ConvertiblePair(String.class, org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration.class));
+        answer.add(new ConvertiblePair(String.class, org.apache.camel.spi.HeaderFilterStrategy.class));
+        answer.add(new ConvertiblePair(String.class, io.vertx.core.Vertx.class));
+        answer.add(new ConvertiblePair(String.class, io.vertx.core.VertxOptions.class));
+        return answer;
+    }
+
+    public Object convert(
+            Object source,
+            TypeDescriptor sourceType,
+            TypeDescriptor targetType) {
+        if (source == null) {
+            return null;
+        }
+        String ref = source.toString();
+        if (!ref.startsWith("#")) {
+            return null;
+        }
+        ref = ref.startsWith("#bean:") ? ref.substring(6) : ref.substring(1);
+        switch (targetType.getName()) {
+            case "org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration": return camelContext.getRegistry().lookupByNameAndType(ref, org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration.class);
+            case "org.apache.camel.spi.HeaderFilterStrategy": return camelContext.getRegistry().lookupByNameAndType(ref, org.apache.camel.spi.HeaderFilterStrategy.class);
+            case "io.vertx.core.Vertx": return camelContext.getRegistry().lookupByNameAndType(ref, io.vertx.core.Vertx.class);
+            case "io.vertx.core.VertxOptions": return camelContext.getRegistry().lookupByNameAndType(ref, io.vertx.core.VertxOptions.class);
+        }
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/components-starter/camel-vertx-kafka-starter/src/main/resources/META-INF/LICENSE.txt b/components-starter/camel-vertx-kafka-starter/src/main/resources/META-INF/LICENSE.txt
new file mode 100644
index 0000000..6b0b127
--- /dev/null
+++ b/components-starter/camel-vertx-kafka-starter/src/main/resources/META-INF/LICENSE.txt
@@ -0,0 +1,203 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
diff --git a/components-starter/camel-vertx-kafka-starter/src/main/resources/META-INF/NOTICE.txt b/components-starter/camel-vertx-kafka-starter/src/main/resources/META-INF/NOTICE.txt
new file mode 100644
index 0000000..2e215bf
--- /dev/null
+++ b/components-starter/camel-vertx-kafka-starter/src/main/resources/META-INF/NOTICE.txt
@@ -0,0 +1,11 @@
+   =========================================================================
+   ==  NOTICE file corresponding to the section 4 d of                    ==
+   ==  the Apache License, Version 2.0,                                   ==
+   ==  in this case for the Apache Camel distribution.                    ==
+   =========================================================================
+
+   This product includes software developed by
+   The Apache Software Foundation (http://www.apache.org/).
+
+   Please read the different LICENSE files present in the licenses directory of
+   this distribution.
diff --git a/components-starter/camel-vertx-kafka-starter/src/main/resources/META-INF/spring.factories b/components-starter/camel-vertx-kafka-starter/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000..1e8e116
--- /dev/null
+++ b/components-starter/camel-vertx-kafka-starter/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,19 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License.  You may obtain a copy of the License at
+##
+##      http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+org.apache.camel.component.vertx.kafka.springboot.VertxKafkaComponentAutoConfiguration
diff --git a/components-starter/camel-vertx-kafka-starter/src/main/resources/META-INF/spring.provides b/components-starter/camel-vertx-kafka-starter/src/main/resources/META-INF/spring.provides
new file mode 100644
index 0000000..090484b
--- /dev/null
+++ b/components-starter/camel-vertx-kafka-starter/src/main/resources/META-INF/spring.provides
@@ -0,0 +1,17 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License.  You may obtain a copy of the License at
+##
+##      http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+provides: camel-vertx-kafka
diff --git a/components-starter/pom.xml b/components-starter/pom.xml
index 5eea0ce..6deaf68 100644
--- a/components-starter/pom.xml
+++ b/components-starter/pom.xml
@@ -425,6 +425,7 @@
     <module>camel-validator-starter</module>
     <module>camel-velocity-starter</module>
     <module>camel-vertx-http-starter</module>
+    <module>camel-vertx-kafka-starter</module>
     <module>camel-vertx-starter</module>
     <module>camel-vertx-websocket-starter</module>
     <module>camel-vm-starter</module>
diff --git a/docs/modules/ROOT/pages/list.adoc b/docs/modules/ROOT/pages/list.adoc
index 81f788e..9f7b3dd 100644
--- a/docs/modules/ROOT/pages/list.adoc
+++ b/docs/modules/ROOT/pages/list.adoc
@@ -5,7 +5,7 @@
 == Camel Components
 
 // components: START
-Number of Camel components: 341 in 273 JAR artifacts (3 deprecated)
+Number of Camel components: 342 in 274 JAR artifacts (3 deprecated)
 
 [width="100%",cols="4,3,3,3,6",options="header"]
 |===
@@ -653,6 +653,8 @@
 
 | xref:latest@components::vertx-http-component.adoc[Vert.x HTTP Client] | camel-vertx-http-starter | Stable | 3.5 | Send requests to external HTTP servers using Vert.x
 
+| xref:latest@components::vertx-kafka-component.adoc[Vert.x Kafka] | camel-vertx-kafka-starter | Preview | 3.7 | Sent and receive messages to/from an Apache Kafka broker using vert.x Kafka client
+
 | xref:latest@components::vertx-websocket-component.adoc[Vert.x WebSocket] | camel-vertx-websocket-starter | Stable | 3.5 | Expose WebSocket endpoints and connect to remote WebSocket servers using Vert.x
 
 | xref:latest@components::vm-component.adoc[VM] | camel-vm-starter | Stable | 1.1 | Call another endpoint in the same CamelContext asynchronously.
diff --git a/docs/modules/ROOT/pages/vertx-kafka-starter.adoc b/docs/modules/ROOT/pages/vertx-kafka-starter.adoc
new file mode 100644
index 0000000..ddf216e
--- /dev/null
+++ b/docs/modules/ROOT/pages/vertx-kafka-starter.adoc
@@ -0,0 +1,129 @@
+// spring-boot-auto-configure options: START
+:page-partial:
+:doctitle: Camel Spring Boot Starter for vertx-kafka
+
+== Spring Boot Auto-Configuration
+
+When using vertx-kafka with Spring Boot make sure to use the following Maven dependency to have support for auto configuration:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.springboot</groupId>
+  <artifactId>camel-vertx-kafka-starter</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel core version -->
+</dependency>
+----
+
+
+The component supports 99 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.vertx-kafka.acks* | The number of acknowledgments the producer requires the leader to have received before considering a request complete. This controls the durability of records that are sent. The following settings are allowed: acks=0 If set to zero then the producer will not wait for any acknowledgment from the server at all. The record will be immediately added to the socket buffer and considered sent. No guarantee can be made that the server has received the record in this case, and the retries configuration will not take effect (as the client won't generally know of any failures). The offset given back for each record will always be set to -1. acks=1 This will mean the leader will write the record to its local log but will respond without awaiting full acknowledgement from all followers. In this case should the leader fail immediately after acknowledging the record but before the followers have replicated it then the record will be lost. acks=all This means the leader will wait for the full set of in-sync replicas to acknowledge the record. This guarantees that the record will not be lost as long as at least one in-sync replica remains alive. This is the strongest available guarantee. This is equivalent to the acks=-1 setting. | 1 | String
+| *camel.component.vertx-kafka.additional-properties* | Sets additional properties for either kafka consumer or kafka producer in case they can't be set directly on the camel configurations (e.g: new Kafka properties that are not reflected yet in Camel configurations), the properties have to be prefixed with additionalProperties.. E.g: additionalProperties.transactional.id=12345&additionalProperties.schema.registry.url=\http://localhost:8811/avro |  | Map
+| *camel.component.vertx-kafka.allow-auto-create-topics* | Allow automatic topic creation on the broker when subscribing to or assigning a topic. A topic being subscribed to will be automatically created only if the broker allows for it using auto.create.topics.enable broker configuration. This configuration must be set to false when using brokers older than 0.11.0 | true | Boolean
+| *camel.component.vertx-kafka.auto-commit-interval-ms* | The frequency in milliseconds that the consumer offsets are auto-committed to Kafka if enable.auto.commit is set to true. The option is a int type. | 5000 | Integer
+| *camel.component.vertx-kafka.auto-offset-reset* | What to do when there is no initial offset in Kafka or if the current offset does not exist any more on the server (e.g. because that data has been deleted): earliest: automatically reset the offset to the earliest offsetlatest: automatically reset the offset to the latest offsetnone: throw exception to the consumer if no previous offset is found for the consumer's groupanything else: throw exception to the consumer. | latest | String
+| *camel.component.vertx-kafka.autowired-enabled* | Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | Boolean
+| *camel.component.vertx-kafka.batch-size* | The producer will attempt to batch records together into fewer requests whenever multiple records are being sent to the same partition. This helps performance on both the client and the server. This configuration controls the default batch size in bytes. No attempt will be made to batch records larger than this size. Requests sent to brokers will contain multiple batches, one for each partition with data available to be sent. A small batch size will make batching less common and may reduce throughput (a batch size of zero will disable batching entirely). A very large batch size may use memory a bit more wastefully as we will always allocate a buffer of the specified batch size in anticipation of additional records. | 16384 | Integer
+| *camel.component.vertx-kafka.bootstrap-servers* | A list of host/port pairs to use for establishing the initial connection to the Kafka cluster. The client will make use of all servers irrespective of which servers are specified here for bootstrapping&mdash;this list only impacts the initial hosts used to discover the full set of servers. This list should be in the form host1:port1,host2:port2,.... Since these servers are just used for the initial connection to discover the full cluster membership (which may change dynamically), this list need not contain the full set of servers (you may want more than one, though, in case a server is down). |  | String
+| *camel.component.vertx-kafka.bridge-error-handler* | 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 | Boolean
+| *camel.component.vertx-kafka.buffer-memory* | The total bytes of memory the producer can use to buffer records waiting to be sent to the server. If records are sent faster than they can be delivered to the server the producer will block for max.block.ms after which it will throw an exception.This setting should correspond roughly to the total memory the producer will use, but is not a hard bound since not all memory the producer uses is used for buffering. Some additional memory will be used for compression (if compression is enabled) as well as for maintaining in-flight requests. | 33554432 | Long
+| *camel.component.vertx-kafka.check-crcs* | Automatically check the CRC32 of the records consumed. This ensures no on-the-wire or on-disk corruption to the messages occurred. This check adds some overhead, so it may be disabled in cases seeking extreme performance. | true | Boolean
+| *camel.component.vertx-kafka.client-dns-lookup* | Controls how the client uses DNS lookups. If set to use_all_dns_ips, connect to each returned IP address in sequence until a successful connection is established. After a disconnection, the next IP is used. Once all IPs have been used once, the client resolves the IP(s) from the hostname again (both the JVM and the OS cache DNS name lookups, however). If set to resolve_canonical_bootstrap_servers_only, resolve each bootstrap address into a list of canonical names. After the bootstrap phase, this behaves the same as use_all_dns_ips. If set to default (deprecated), attempt to connect to the first IP address returned by the lookup, even if the lookup returns multiple IP addresses. | use_all_dns_ips | String
+| *camel.component.vertx-kafka.client-id* | An id string to pass to the server when making requests. The purpose of this is to be able to track the source of requests beyond just ip/port by allowing a logical application name to be included in server-side request logging. |  | String
+| *camel.component.vertx-kafka.client-rack* | A rack identifier for this client. This can be any string value which indicates where this client is physically located. It corresponds with the broker config 'broker.rack' |  | String
+| *camel.component.vertx-kafka.compression-type* | The compression type for all data generated by the producer. The default is none (i.e. no compression). Valid values are none, gzip, snappy, lz4, or zstd. Compression is of full batches of data, so the efficacy of batching will also impact the compression ratio (more batching means better compression). | none | String
+| *camel.component.vertx-kafka.configuration* | The component configurations. The option is a org.apache.camel.component.vertx.kafka.configuration.VertxKafkaConfiguration type. |  | VertxKafkaConfiguration
+| *camel.component.vertx-kafka.connections-max-idle-ms* | Close idle connections after the number of milliseconds specified by this config. The option is a long type. | 540000 | Long
+| *camel.component.vertx-kafka.default-api-timeout-ms* | Specifies the timeout (in milliseconds) for client APIs. This configuration is used as the default timeout for all client operations that do not specify a timeout parameter. The option is a int type. | 60000 | Integer
+| *camel.component.vertx-kafka.delivery-timeout-ms* | An upper bound on the time to report success or failure after a call to send() returns. This limits the total time that a record will be delayed prior to sending, the time to await acknowledgement from the broker (if expected), and the time allowed for retriable send failures. The producer may report failure to send a record earlier than this config if either an unrecoverable error is encountered, the retries have been exhausted, or the record is added to a batch which reached an earlier delivery expiration deadline. The value of this config should be greater than or equal to the sum of request.timeout.ms and linger.ms. The option is a int type. | 120000 | Integer
+| *camel.component.vertx-kafka.enable-auto-commit* | If true the consumer's offset will be periodically committed in the background. | true | Boolean
+| *camel.component.vertx-kafka.enable-idempotence* | When set to 'true', the producer will ensure that exactly one copy of each message is written in the stream. If 'false', producer retries due to broker failures, etc., may write duplicates of the retried message in the stream. Note that enabling idempotence requires max.in.flight.requests.per.connection to be less than or equal to 5, retries to be greater than 0 and acks must be 'all'. If these values are not explicitly set by the user, suitable values will be chosen. If incompatible values are set, a ConfigException will be thrown. | false | Boolean
+| *camel.component.vertx-kafka.enabled* | Whether to enable auto configuration of the vertx-kafka component. This is enabled by default. |  | Boolean
+| *camel.component.vertx-kafka.exclude-internal-topics* | Whether internal topics matching a subscribed pattern should be excluded from the subscription. It is always possible to explicitly subscribe to an internal topic. | true | Boolean
+| *camel.component.vertx-kafka.fetch-max-bytes* | The maximum amount of data the server should return for a fetch request. Records are fetched in batches by the consumer, and if the first record batch in the first non-empty partition of the fetch is larger than this value, the record batch will still be returned to ensure that the consumer can make progress. As such, this is not a absolute maximum. The maximum record batch size accepted by the broker is defined via message.max.bytes (broker config) or max.message.bytes (topic config). Note that the consumer performs multiple fetches in parallel. | 52428800 | Integer
+| *camel.component.vertx-kafka.fetch-max-wait-ms* | The maximum amount of time the server will block before answering the fetch request if there isn't sufficient data to immediately satisfy the requirement given by fetch.min.bytes. The option is a int type. | 500 | Integer
+| *camel.component.vertx-kafka.fetch-min-bytes* | The minimum amount of data the server should return for a fetch request. If insufficient data is available the request will wait for that much data to accumulate before answering the request. The default setting of 1 byte means that fetch requests are answered as soon as a single byte of data is available or the fetch request times out waiting for data to arrive. Setting this to something greater than 1 will cause the server to wait for larger amounts of data to accumulate which can improve server throughput a bit at the cost of some additional latency. | 1 | Integer
+| *camel.component.vertx-kafka.group-id* | A unique string that identifies the consumer group this consumer belongs to. This property is required if the consumer uses either the group management functionality by using subscribe(topic) or the Kafka-based offset management strategy. |  | String
+| *camel.component.vertx-kafka.group-instance-id* | A unique identifier of the consumer instance provided by the end user. Only non-empty strings are permitted. If set, the consumer is treated as a static member, which means that only one instance with this ID is allowed in the consumer group at any time. This can be used in combination with a larger session timeout to avoid group rebalances caused by transient unavailability (e.g. process restarts). If not set, the consumer will join the group as a dynamic member, which is the traditional behavior. |  | String
+| *camel.component.vertx-kafka.header-filter-strategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. The option is a org.apache.camel.spi.HeaderFilterStrategy type. |  | HeaderFilterStrategy
+| *camel.component.vertx-kafka.heartbeat-interval-ms* | The expected time between heartbeats to the consumer coordinator when using Kafka's group management facilities. Heartbeats are used to ensure that the consumer's session stays active and to facilitate rebalancing when new consumers join or leave the group. The value must be set lower than session.timeout.ms, but typically should be set no higher than 1/3 of that value. It can be adjusted even lower to control the expected time for normal rebalances. The option is a int type. | 3000 | Integer
+| *camel.component.vertx-kafka.interceptor-classes* | A list of classes to use as interceptors. Implementing the org.apache.kafka.clients.producer.ProducerInterceptor interface allows you to intercept (and possibly mutate) the records received by the producer before they are published to the Kafka cluster. By default, there are no interceptors. |  | String
+| *camel.component.vertx-kafka.isolation-level* | Controls how to read messages written transactionally. If set to read_committed, consumer.poll() will only return transactional messages which have been committed. If set to read_uncommitted' (the default), consumer.poll() will return all messages, even transactional messages which have been aborted. Non-transactional messages will be returned unconditionally in either mode. Messages will always be returned in offset order. Hence, in read_committed mode, consumer.poll() will only return messages up to the last stable offset (LSO), which is the one less than the offset of the first open transaction. In particular any messages appearing after messages belonging to ongoing transactions will be withheld until the relevant transaction has been completed. As a result, read_committed consumers will not be able to read up to the high watermark when there are in flight transactions. Further, when in read_committed the seekToEnd method will return the LSO | read_uncommitted | String
+| *camel.component.vertx-kafka.key-deserializer* | Deserializer class for key that implements the org.apache.kafka.common.serialization.Deserializer interface. | org.apache.kafka.common.serialization.StringDeserializer | String
+| *camel.component.vertx-kafka.key-serializer* | Serializer class for key that implements the org.apache.kafka.common.serialization.Serializer interface. | org.apache.kafka.common.serialization.StringSerializer | String
+| *camel.component.vertx-kafka.lazy-start-producer* | 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 | Boolean
+| *camel.component.vertx-kafka.linger-ms* | The producer groups together any records that arrive in between request transmissions into a single batched request. Normally this occurs only under load when records arrive faster than they can be sent out. However in some circumstances the client may want to reduce the number of requests even under moderate load. This setting accomplishes this by adding a small amount of artificial delay&mdash;that is, rather than immediately sending out a record the producer will wait for up to the given delay to allow other records to be sent so that the sends can be batched together. This can be thought of as analogous to Nagle's algorithm in TCP. This setting gives the upper bound on the delay for batching: once we get batch.size worth of records for a partition it will be sent immediately regardless of this setting, however if we have fewer than this many bytes accumulated for this partition we will 'linger' for the specified time waiting for more records to show up. This setting defaults to 0 (i.e. no delay). Setting linger.ms=5, for example, would have the effect of reducing the number of requests sent but would add up to 5ms of latency to records sent in the absence of load. The option is a long type. | 0 | Long
+| *camel.component.vertx-kafka.max-block-ms* | The configuration controls how long KafkaProducer.send() and KafkaProducer.partitionsFor() will block.These methods can be blocked either because the buffer is full or metadata unavailable.Blocking in the user-supplied serializers or partitioner will not be counted against this timeout. The option is a long type. | 60000 | Long
+| *camel.component.vertx-kafka.max-in-flight-requests-per-connection* | The maximum number of unacknowledged requests the client will send on a single connection before blocking. Note that if this setting is set to be greater than 1 and there are failed sends, there is a risk of message re-ordering due to retries (i.e., if retries are enabled). | 5 | Integer
+| *camel.component.vertx-kafka.max-partition-fetch-bytes* | The maximum amount of data per-partition the server will return. Records are fetched in batches by the consumer. If the first record batch in the first non-empty partition of the fetch is larger than this limit, the batch will still be returned to ensure that the consumer can make progress. The maximum record batch size accepted by the broker is defined via message.max.bytes (broker config) or max.message.bytes (topic config). See fetch.max.bytes for limiting the consumer request size. | 1048576 | Integer
+| *camel.component.vertx-kafka.max-poll-interval-ms* | The maximum delay between invocations of poll() when using consumer group management. This places an upper bound on the amount of time that the consumer can be idle before fetching more records. If poll() is not called before expiration of this timeout, then the consumer is considered failed and the group will rebalance in order to reassign the partitions to another member. For consumers using a non-null group.instance.id which reach this timeout, partitions will not be immediately reassigned. Instead, the consumer will stop sending heartbeats and partitions will be reassigned after expiration of session.timeout.ms. This mirrors the behavior of a static consumer which has shutdown. The option is a int type. | 300000 | Integer
+| *camel.component.vertx-kafka.max-poll-records* | The maximum number of records returned in a single call to poll(). | 500 | Integer
+| *camel.component.vertx-kafka.max-request-size* | The maximum size of a request in bytes. This setting will limit the number of record batches the producer will send in a single request to avoid sending huge requests. This is also effectively a cap on the maximum uncompressed record batch size. Note that the server has its own cap on the record batch size (after compression if compression is enabled) which may be different from this. | 1048576 | Integer
+| *camel.component.vertx-kafka.metadata-max-age-ms* | The period of time in milliseconds after which we force a refresh of metadata even if we haven't seen any partition leadership changes to proactively discover any new brokers or partitions. The option is a long type. | 300000 | Long
+| *camel.component.vertx-kafka.metadata-max-idle-ms* | Controls how long the producer will cache metadata for a topic that's idle. If the elapsed time since a topic was last produced to exceeds the metadata idle duration, then the topic's metadata is forgotten and the next access to it will force a metadata fetch request. The option is a long type. | 300000 | Long
+| *camel.component.vertx-kafka.metric-reporters* | A list of classes to use as metrics reporters. Implementing the org.apache.kafka.common.metrics.MetricsReporter interface allows plugging in classes that will be notified of new metric creation. The JmxReporter is always included to register JMX statistics. |  | String
+| *camel.component.vertx-kafka.metrics-num-samples* | The number of samples maintained to compute metrics. | 2 | Integer
+| *camel.component.vertx-kafka.metrics-recording-level* | The highest recording level for metrics. | INFO | String
+| *camel.component.vertx-kafka.metrics-sample-window-ms* | The window of time a metrics sample is computed over. The option is a long type. | 30000 | Long
+| *camel.component.vertx-kafka.partition-assignment-strategy* | A list of class names or class types, ordered by preference, of supported partition assignment strategies that the client will use to distribute partition ownership amongst consumer instances when group management is used.In addition to the default class specified below, you can use the org.apache.kafka.clients.consumer.RoundRobinAssignorclass for round robin assignments of partitions to consumers. Implementing the org.apache.kafka.clients.consumer.ConsumerPartitionAssignor interface allows you to plug in a custom assignmentstrategy. | org.apache.kafka.clients.consumer.RangeAssignor | String
+| *camel.component.vertx-kafka.partition-id* | The partition to which the record will be sent (or null if no partition was specified) or read from a particular partition if set. Header VertxKafkaConstants#PARTITION_ID If configured, it will take precedence over this config |  | Integer
+| *camel.component.vertx-kafka.partitioner-class* | Partitioner class that implements the org.apache.kafka.clients.producer.Partitioner interface. | org.apache.kafka.clients.producer.internals.DefaultPartitioner | String
+| *camel.component.vertx-kafka.receive-buffer-bytes* | The size of the TCP receive buffer (SO_RCVBUF) to use when reading data. If the value is -1, the OS default will be used. | 32768 | Integer
+| *camel.component.vertx-kafka.reconnect-backoff-max-ms* | The maximum amount of time in milliseconds to wait when reconnecting to a broker that has repeatedly failed to connect. If provided, the backoff per host will increase exponentially for each consecutive connection failure, up to this maximum. After calculating the backoff increase, 20% random jitter is added to avoid connection storms. The option is a long type. | 1000 | Long
+| *camel.component.vertx-kafka.reconnect-backoff-ms* | The base amount of time to wait before attempting to reconnect to a given host. This avoids repeatedly connecting to a host in a tight loop. This backoff applies to all connection attempts by the client to a broker. The option is a long type. | 50 | Long
+| *camel.component.vertx-kafka.request-timeout-ms* | The configuration controls the maximum amount of time the client will wait for the response of a request. If the response is not received before the timeout elapses the client will resend the request if necessary or fail the request if retries are exhausted. This should be larger than replica.lag.time.max.ms (a broker configuration) to reduce the possibility of message duplication due to unnecessary producer retries. The option is a int type. | 30000 | Integer
+| *camel.component.vertx-kafka.retries* | Setting a value greater than zero will cause the client to resend any record whose send fails with a potentially transient error. Note that this retry is no different than if the client resent the record upon receiving the error. Allowing retries without setting max.in.flight.requests.per.connection to 1 will potentially change the ordering of records because if two batches are sent to a single partition, and the first fails and is retried but the second succeeds, then the records in the second batch may appear first. Note additionally that produce requests will be failed before the number of retries has been exhausted if the timeout configured by delivery.timeout.ms expires first before successful acknowledgement. Users should generally prefer to leave this config unset and instead use delivery.timeout.ms to control retry behavior. | 2147483647 | Integer
+| *camel.component.vertx-kafka.retry-backoff-ms* | The amount of time to wait before attempting to retry a failed request to a given topic partition. This avoids repeatedly sending requests in a tight loop under some failure scenarios. The option is a long type. | 100 | Long
+| *camel.component.vertx-kafka.sasl-client-callback-handler-class* | The fully qualified name of a SASL client callback handler class that implements the AuthenticateCallbackHandler interface. |  | String
+| *camel.component.vertx-kafka.sasl-jaas-config* | JAAS login context parameters for SASL connections in the format used by JAAS configuration files. JAAS configuration file format is described here. The format for the value is: 'loginModuleClass controlFlag (optionName=optionValue);'. For brokers, the config must be prefixed with listener prefix and SASL mechanism name in lower-case. For example, listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=com.example.ScramLoginModule required; |  | String
+| *camel.component.vertx-kafka.sasl-kerberos-kinit-cmd* | Kerberos kinit command path. | /usr/bin/kinit | String
+| *camel.component.vertx-kafka.sasl-kerberos-min-time-before-relogin* | Login thread sleep time between refresh attempts. | 60000 | Long
+| *camel.component.vertx-kafka.sasl-kerberos-service-name* | The Kerberos principal name that Kafka runs as. This can be defined either in Kafka's JAAS config or in Kafka's config. |  | String
+| *camel.component.vertx-kafka.sasl-kerberos-ticket-renew-jitter* | Percentage of random jitter added to the renewal time. |  | Double
+| *camel.component.vertx-kafka.sasl-kerberos-ticket-renew-window-factor* | Login thread will sleep until the specified window factor of time from last refresh to ticket's expiry has been reached, at which time it will try to renew the ticket. |  | Double
+| *camel.component.vertx-kafka.sasl-login-callback-handler-class* | The fully qualified name of a SASL login callback handler class that implements the AuthenticateCallbackHandler interface. For brokers, login callback handler config must be prefixed with listener prefix and SASL mechanism name in lower-case. For example, listener.name.sasl_ssl.scram-sha-256.sasl.login.callback.handler.class=com.example.CustomScramLoginCallbackHandler |  | String
+| *camel.component.vertx-kafka.sasl-login-class* | The fully qualified name of a class that implements the Login interface. For brokers, login config must be prefixed with listener prefix and SASL mechanism name in lower-case. For example, listener.name.sasl_ssl.scram-sha-256.sasl.login.class=com.example.CustomScramLogin |  | String
+| *camel.component.vertx-kafka.sasl-login-refresh-buffer-seconds* | The amount of buffer time before credential expiration to maintain when refreshing a credential, in seconds. If a refresh would otherwise occur closer to expiration than the number of buffer seconds then the refresh will be moved up to maintain as much of the buffer time as possible. Legal values are between 0 and 3600 (1 hour); a default value of 300 (5 minutes) is used if no value is specified. This value and sasl.login.refresh.min.period.seconds are both ignored if their sum exceeds the remaining lifetime of a credential. Currently applies only to OAUTHBEARER. | 300 | Short
+| *camel.component.vertx-kafka.sasl-login-refresh-min-period-seconds* | The desired minimum time for the login refresh thread to wait before refreshing a credential, in seconds. Legal values are between 0 and 900 (15 minutes); a default value of 60 (1 minute) is used if no value is specified. This value and sasl.login.refresh.buffer.seconds are both ignored if their sum exceeds the remaining lifetime of a credential. Currently applies only to OAUTHBEARER. | 60 | Short
+| *camel.component.vertx-kafka.sasl-login-refresh-window-factor* | Login refresh thread will sleep until the specified window factor relative to the credential's lifetime has been reached, at which time it will try to refresh the credential. Legal values are between 0.5 (50%) and 1.0 (100%) inclusive; a default value of 0.8 (80%) is used if no value is specified. Currently applies only to OAUTHBEARER. |  | Double
+| *camel.component.vertx-kafka.sasl-login-refresh-window-jitter* | The maximum amount of random jitter relative to the credential's lifetime that is added to the login refresh thread's sleep time. Legal values are between 0 and 0.25 (25%) inclusive; a default value of 0.05 (5%) is used if no value is specified. Currently applies only to OAUTHBEARER. |  | Double
+| *camel.component.vertx-kafka.sasl-mechanism* | SASL mechanism used for client connections. This may be any mechanism for which a security provider is available. GSSAPI is the default mechanism. | GSSAPI | String
+| *camel.component.vertx-kafka.security-protocol* | Protocol used to communicate with brokers. Valid values are: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL. | PLAINTEXT | String
+| *camel.component.vertx-kafka.security-providers* | A list of configurable creator classes each returning a provider implementing security algorithms. These classes should implement the org.apache.kafka.common.security.auth.SecurityProviderCreator interface. |  | String
+| *camel.component.vertx-kafka.seek-to-offset* | Set if KafkaConsumer will read from a particular offset on startup. This config will take precedence over seekTo config |  | Long
+| *camel.component.vertx-kafka.seek-to-position* | Set if KafkaConsumer will read from beginning or end on startup: beginning : read from beginning end : read from end. |  | String
+| *camel.component.vertx-kafka.send-buffer-bytes* | The size of the TCP send buffer (SO_SNDBUF) to use when sending data. If the value is -1, the OS default will be used. | 131072 | Integer
+| *camel.component.vertx-kafka.session-timeout-ms* | The timeout used to detect client failures when using Kafka's group management facility. The client sends periodic heartbeats to indicate its liveness to the broker. If no heartbeats are received by the broker before the expiration of this session timeout, then the broker will remove this client from the group and initiate a rebalance. Note that the value must be in the allowable range as configured in the broker configuration by group.min.session.timeout.ms and group.max.session.timeout.ms. The option is a int type. | 10000 | Integer
+| *camel.component.vertx-kafka.ssl-cipher-suites* | A list of cipher suites. This is a named combination of authentication, encryption, MAC and key exchange algorithm used to negotiate the security settings for a network connection using TLS or SSL network protocol. By default all the available cipher suites are supported. |  | String
+| *camel.component.vertx-kafka.ssl-enabled-protocols* | The list of protocols enabled for SSL connections. The default is 'TLSv1.2,TLSv1.3' when running with Java 11 or newer, 'TLSv1.2' otherwise. With the default value for Java 11, clients and servers will prefer TLSv1.3 if both support it and fallback to TLSv1.2 otherwise (assuming both support at least TLSv1.2). This default should be fine for most cases. Also see the config documentation for ssl.protocol. | TLSv1.2,TLSv1.3 | String
+| *camel.component.vertx-kafka.ssl-endpoint-identification-algorithm* | The endpoint identification algorithm to validate server hostname using server certificate. | https | String
+| *camel.component.vertx-kafka.ssl-engine-factory-class* | The class of type org.apache.kafka.common.security.auth.SslEngineFactory to provide SSLEngine objects. Default value is org.apache.kafka.common.security.ssl.DefaultSslEngineFactory |  | String
+| *camel.component.vertx-kafka.ssl-key-password* | The password of the private key in the key store file. This is optional for client. |  | String
+| *camel.component.vertx-kafka.ssl-keymanager-algorithm* | The algorithm used by key manager factory for SSL connections. Default value is the key manager factory algorithm configured for the Java Virtual Machine. | SunX509 | String
+| *camel.component.vertx-kafka.ssl-keystore-location* | The location of the key store file. This is optional for client and can be used for two-way authentication for client. |  | String
+| *camel.component.vertx-kafka.ssl-keystore-password* | The store password for the key store file. This is optional for client and only needed if ssl.keystore.location is configured. |  | String
+| *camel.component.vertx-kafka.ssl-keystore-type* | The file format of the key store file. This is optional for client. | JKS | String
+| *camel.component.vertx-kafka.ssl-protocol* | The SSL protocol used to generate the SSLContext. The default is 'TLSv1.3' when running with Java 11 or newer, 'TLSv1.2' otherwise. This value should be fine for most use cases. Allowed values in recent JVMs are 'TLSv1.2' and 'TLSv1.3'. 'TLS', 'TLSv1.1', 'SSL', 'SSLv2' and 'SSLv3' may be supported in older JVMs, but their usage is discouraged due to known security vulnerabilities. With the default value for this config and 'ssl.enabled.protocols', clients will downgrade to 'TLSv1.2' if the server does not support 'TLSv1.3'. If this config is set to 'TLSv1.2', clients will not use 'TLSv1.3' even if it is one of the values in ssl.enabled.protocols and the server only supports 'TLSv1.3'. | TLSv1.3 | String
+| *camel.component.vertx-kafka.ssl-provider* | The name of the security provider used for SSL connections. Default value is the default security provider of the JVM. |  | String
+| *camel.component.vertx-kafka.ssl-secure-random-implementation* | The SecureRandom PRNG implementation to use for SSL cryptography operations. |  | String
+| *camel.component.vertx-kafka.ssl-trustmanager-algorithm* | The algorithm used by trust manager factory for SSL connections. Default value is the trust manager factory algorithm configured for the Java Virtual Machine. | PKIX | String
+| *camel.component.vertx-kafka.ssl-truststore-location* | The location of the trust store file. |  | String
+| *camel.component.vertx-kafka.ssl-truststore-password* | The password for the trust store file. If a password is not set access to the truststore is still available, but integrity checking is disabled. |  | String
+| *camel.component.vertx-kafka.ssl-truststore-type* | The file format of the trust store file. | JKS | String
+| *camel.component.vertx-kafka.transaction-timeout-ms* | The maximum amount of time in ms that the transaction coordinator will wait for a transaction status update from the producer before proactively aborting the ongoing transaction.If this value is larger than the transaction.max.timeout.ms setting in the broker, the request will fail with a InvalidTransactionTimeout error. The option is a int type. | 60000 | Integer
+| *camel.component.vertx-kafka.transactional-id* | The TransactionalId to use for transactional delivery. This enables reliability semantics which span multiple producer sessions since it allows the client to guarantee that transactions using the same TransactionalId have been completed prior to starting any new transactions. If no TransactionalId is provided, then the producer is limited to idempotent delivery. If a TransactionalId is configured, enable.idempotence is implied. By default the TransactionId is not configured, which means transactions cannot be used. Note that, by default, transactions require a cluster of at least three brokers which is the recommended setting for production; for development you can change this, by adjusting broker setting transaction.state.log.replication.factor. |  | String
+| *camel.component.vertx-kafka.value-deserializer* | Deserializer class for value that implements the org.apache.kafka.common.serialization.Deserializer interface. | org.apache.kafka.common.serialization.StringDeserializer | String
+| *camel.component.vertx-kafka.value-serializer* | Serializer class for value that implements the org.apache.kafka.common.serialization.Serializer interface. | org.apache.kafka.common.serialization.StringSerializer | String
+| *camel.component.vertx-kafka.vertx* | To use an existing vertx instead of creating a new instance. The option is a io.vertx.core.Vertx type. |  | Vertx
+| *camel.component.vertx-kafka.vertx-options* | To provide a custom set of vertx options for configuring vertx. The option is a io.vertx.core.VertxOptions type. |  | VertxOptions
+|===
+
+
+// spring-boot-auto-configure options: END
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelVertxKafkaTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelVertxKafkaTest.java
new file mode 100644
index 0000000..4a6e94f
--- /dev/null
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelVertxKafkaTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.itest.springboot;
+
+import org.apache.camel.itest.springboot.util.ArquillianPackager;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.Archive;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+
+@RunWith(Arquillian.class)
+public class CamelVertxKafkaTest extends AbstractSpringBootTestSupport {
+
+    @Deployment
+    public static Archive<?> createSpringBootPackage() throws Exception {
+        return ArquillianPackager.springBootPackage(createTestConfig());
+    }
+
+    public static ITestConfig createTestConfig() {
+        return new ITestConfigBuilder()
+                .module(inferModuleName(CamelAzureEventhubsTest.class))
+                .build();
+    }
+
+    @Test
+    public void componentTests() throws Exception {
+        this.runComponentTest(config);
+        this.runModuleUnitTestsIfEnabled(config);
+    }
+
+
+}
diff --git a/tooling/camel-spring-boot-bom/pom.xml b/tooling/camel-spring-boot-bom/pom.xml
index 26ae887..b8b56e8 100644
--- a/tooling/camel-spring-boot-bom/pom.xml
+++ b/tooling/camel-spring-boot-bom/pom.xml
@@ -1613,6 +1613,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel.springboot</groupId>
+        <artifactId>camel-vertx-kafka-starter</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel.springboot</groupId>
         <artifactId>camel-vertx-starter</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git a/tooling/camel-spring-boot-dependencies/pom.xml b/tooling/camel-spring-boot-dependencies/pom.xml
index 7bd7409..dd27657 100644
--- a/tooling/camel-spring-boot-dependencies/pom.xml
+++ b/tooling/camel-spring-boot-dependencies/pom.xml
@@ -1823,6 +1823,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel.springboot</groupId>
+        <artifactId>camel-vertx-kafka-starter</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel.springboot</groupId>
         <artifactId>camel-vertx-starter</artifactId>
         <version>${project.version}</version>
       </dependency>
@@ -3884,6 +3889,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-vertx-kafka</artifactId>
+        <version>3.7.0-SNAPSHOT</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-vertx-websocket</artifactId>
         <version>3.7.0-SNAPSHOT</version>
       </dependency>
