You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2022/04/04 16:09:55 UTC

[camel] branch main updated: "CAMEL-17091:Debezium 1.7.0 - DB2 Connector" (#7343)

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 4eca3b25c2e "CAMEL-17091:Debezium 1.7.0 - DB2 Connector" (#7343)
4eca3b25c2e is described below

commit 4eca3b25c2e2e637d811e6bb088a1d44fa24a546
Author: Ramu <kr...@gmail.com>
AuthorDate: Mon Apr 4 21:39:50 2022 +0530

    "CAMEL-17091:Debezium 1.7.0 - DB2 Connector" (#7343)
    
    Co-authored-by: Kodanda Ramu Kakarla <kk...@kkakarla.pnq.csb>
---
 .../camel-debezium/camel-debezium-db2/pom.xml      | 103 ++++
 .../debezium/DebeziumDb2ComponentConfigurer.java   | 332 ++++++++++++
 .../debezium/DebeziumDb2EndpointConfigurer.java    | 328 ++++++++++++
 .../debezium/DebeziumDb2EndpointUriFactory.java    | 116 +++++
 .../Db2ConnectorEmbeddedDebeziumConfiguration.java | 558 +++++++++++++++++++++
 .../services/org/apache/camel/component.properties |   7 +
 .../org/apache/camel/component/debezium-db2        |   2 +
 .../apache/camel/configurer/debezium-db2-component |   2 +
 .../apache/camel/configurer/debezium-db2-endpoint  |   2 +
 .../apache/camel/urifactory/debezium-db2-endpoint  |   2 +
 .../camel/component/debezium/debezium-db2.json     | 130 +++++
 .../src/main/docs/debezium-db2-component.adoc      | 113 +++++
 .../component/debezium/DebeziumDb2Component.java   |  56 +++
 .../component/debezium/DebeziumDb2Endpoint.java    |  54 ++
 .../debezium/DebeziumDb2ComponentTest.java         |  99 ++++
 ...ConnectorEmbeddedDebeziumConfigurationTest.java |  95 ++++
 .../src/test/resources/log4j2.properties           |  30 ++
 components/camel-debezium/pom.xml                  |   1 +
 18 files changed, 2030 insertions(+)

diff --git a/components/camel-debezium/camel-debezium-db2/pom.xml b/components/camel-debezium/camel-debezium-db2/pom.xml
new file mode 100644
index 00000000000..7c00115f8d9
--- /dev/null
+++ b/components/camel-debezium/camel-debezium-db2/pom.xml
@@ -0,0 +1,103 @@
+<?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</groupId>
+        <artifactId>camel-debezium-parent</artifactId>
+        <version>3.17.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>camel-debezium-db2</artifactId>
+    <packaging>jar</packaging>
+    <name>Camel :: Debezium :: DB2</name>
+    <description>Camel Debezium DB2 support</description>
+
+    <dependencies>
+        <!-- camel -->
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-debezium-common</artifactId>
+        </dependency>
+
+        <!-- debezium Oracle Connector -->
+        <dependency>
+            <groupId>io.debezium</groupId>
+            <artifactId>debezium-connector-db2</artifactId>
+            <version>${debezium-version}</version>
+        </dependency>
+
+        <!-- test -->
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-test-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-slf4j-impl</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-1.2-api</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.camel.maven</groupId>
+                <artifactId>camel-debezium-maven-plugin</artifactId>
+                <version>${project.version}</version>
+                <executions>
+                    <execution>
+                        <id>generate</id>
+                        <goals>
+                            <goal>generate-connector-config</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <dependencies>
+                    <dependency>
+                        <groupId>io.debezium</groupId>
+                        <artifactId>debezium-connector-db2</artifactId>
+                        <version>${debezium-version}</version>
+                        <scope>runtime</scope>
+                    </dependency>
+                </dependencies>
+                <configuration>
+                    <connectorClassName>io.debezium.connector.db2.Db2Connector</connectorClassName>
+                    <connectorConfigClassName>io.debezium.connector.db2.Db2ConnectorConfig</connectorConfigClassName>
+                    <fields>
+                        <tombstones.on.delete>false</tombstones.on.delete>
+                    </fields>
+                    <requiredFields>
+                        <field>database.password</field>
+                        <field>database.server.name</field>
+                    </requiredFields>
+                    <generatedSrcDir>${project.basedir}/src/generated/java</generatedSrcDir>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/components/camel-debezium/camel-debezium-db2/src/generated/java/org/apache/camel/component/debezium/DebeziumDb2ComponentConfigurer.java b/components/camel-debezium/camel-debezium-db2/src/generated/java/org/apache/camel/component/debezium/DebeziumDb2ComponentConfigurer.java
new file mode 100644
index 00000000000..68327c64576
--- /dev/null
+++ b/components/camel-debezium/camel-debezium-db2/src/generated/java/org/apache/camel/component/debezium/DebeziumDb2ComponentConfigurer.java
@@ -0,0 +1,332 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.debezium;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class DebeziumDb2ComponentConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
+
+    private org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration getOrCreateConfiguration(DebeziumDb2Component target) {
+        if (target.getConfiguration() == null) {
+            target.setConfiguration(new org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration());
+        }
+        return target.getConfiguration();
+    }
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        DebeziumDb2Component target = (DebeziumDb2Component) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "additionalproperties":
+        case "additionalProperties": getOrCreateConfiguration(target).setAdditionalProperties(property(camelContext, java.util.Map.class, value)); return true;
+        case "autowiredenabled":
+        case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
+        case "columnblacklist":
+        case "columnBlacklist": getOrCreateConfiguration(target).setColumnBlacklist(property(camelContext, java.lang.String.class, value)); return true;
+        case "columnexcludelist":
+        case "columnExcludeList": getOrCreateConfiguration(target).setColumnExcludeList(property(camelContext, java.lang.String.class, value)); return true;
+        case "configuration": target.setConfiguration(property(camelContext, org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration.class, value)); return true;
+        case "databasedbname":
+        case "databaseDbname": getOrCreateConfiguration(target).setDatabaseDbname(property(camelContext, java.lang.String.class, value)); return true;
+        case "databasehistory":
+        case "databaseHistory": getOrCreateConfiguration(target).setDatabaseHistory(property(camelContext, java.lang.String.class, value)); return true;
+        case "databasehistoryfilefilename":
+        case "databaseHistoryFileFilename": getOrCreateConfiguration(target).setDatabaseHistoryFileFilename(property(camelContext, java.lang.String.class, value)); return true;
+        case "databasehistorykafkabootstrapservers":
+        case "databaseHistoryKafkaBootstrapServers": getOrCreateConfiguration(target).setDatabaseHistoryKafkaBootstrapServers(property(camelContext, java.lang.String.class, value)); return true;
+        case "databasehistorykafkarecoveryattempts":
+        case "databaseHistoryKafkaRecoveryAttempts": getOrCreateConfiguration(target).setDatabaseHistoryKafkaRecoveryAttempts(property(camelContext, int.class, value)); return true;
+        case "databasehistorykafkarecoverypollintervalms":
+        case "databaseHistoryKafkaRecoveryPollIntervalMs": getOrCreateConfiguration(target).setDatabaseHistoryKafkaRecoveryPollIntervalMs(property(camelContext, int.class, value)); return true;
+        case "databasehistorykafkatopic":
+        case "databaseHistoryKafkaTopic": getOrCreateConfiguration(target).setDatabaseHistoryKafkaTopic(property(camelContext, java.lang.String.class, value)); return true;
+        case "databasehostname":
+        case "databaseHostname": getOrCreateConfiguration(target).setDatabaseHostname(property(camelContext, java.lang.String.class, value)); return true;
+        case "databasepassword":
+        case "databasePassword": getOrCreateConfiguration(target).setDatabasePassword(property(camelContext, java.lang.String.class, value)); return true;
+        case "databaseport":
+        case "databasePort": getOrCreateConfiguration(target).setDatabasePort(property(camelContext, int.class, value)); return true;
+        case "databaseservername":
+        case "databaseServerName": getOrCreateConfiguration(target).setDatabaseServerName(property(camelContext, java.lang.String.class, value)); return true;
+        case "databaseuser":
+        case "databaseUser": getOrCreateConfiguration(target).setDatabaseUser(property(camelContext, java.lang.String.class, value)); return true;
+        case "decimalhandlingmode":
+        case "decimalHandlingMode": getOrCreateConfiguration(target).setDecimalHandlingMode(property(camelContext, java.lang.String.class, value)); return true;
+        case "eventprocessingfailurehandlingmode":
+        case "eventProcessingFailureHandlingMode": getOrCreateConfiguration(target).setEventProcessingFailureHandlingMode(property(camelContext, java.lang.String.class, value)); return true;
+        case "heartbeatintervalms":
+        case "heartbeatIntervalMs": getOrCreateConfiguration(target).setHeartbeatIntervalMs(property(camelContext, int.class, value)); return true;
+        case "heartbeattopicsprefix":
+        case "heartbeatTopicsPrefix": getOrCreateConfiguration(target).setHeartbeatTopicsPrefix(property(camelContext, java.lang.String.class, value)); return true;
+        case "internalkeyconverter":
+        case "internalKeyConverter": getOrCreateConfiguration(target).setInternalKeyConverter(property(camelContext, java.lang.String.class, value)); return true;
+        case "internalvalueconverter":
+        case "internalValueConverter": getOrCreateConfiguration(target).setInternalValueConverter(property(camelContext, java.lang.String.class, value)); return true;
+        case "maxbatchsize":
+        case "maxBatchSize": getOrCreateConfiguration(target).setMaxBatchSize(property(camelContext, int.class, value)); return true;
+        case "maxqueuesize":
+        case "maxQueueSize": getOrCreateConfiguration(target).setMaxQueueSize(property(camelContext, int.class, value)); return true;
+        case "offsetcommitpolicy":
+        case "offsetCommitPolicy": getOrCreateConfiguration(target).setOffsetCommitPolicy(property(camelContext, java.lang.String.class, value)); return true;
+        case "offsetcommittimeoutms":
+        case "offsetCommitTimeoutMs": getOrCreateConfiguration(target).setOffsetCommitTimeoutMs(property(camelContext, java.time.Duration.class, value).toMillis()); return true;
+        case "offsetflushintervalms":
+        case "offsetFlushIntervalMs": getOrCreateConfiguration(target).setOffsetFlushIntervalMs(property(camelContext, java.time.Duration.class, value).toMillis()); return true;
+        case "offsetstorage":
+        case "offsetStorage": getOrCreateConfiguration(target).setOffsetStorage(property(camelContext, java.lang.String.class, value)); return true;
+        case "offsetstoragefilename":
+        case "offsetStorageFileName": getOrCreateConfiguration(target).setOffsetStorageFileName(property(camelContext, java.lang.String.class, value)); return true;
+        case "offsetstoragepartitions":
+        case "offsetStoragePartitions": getOrCreateConfiguration(target).setOffsetStoragePartitions(property(camelContext, int.class, value)); return true;
+        case "offsetstoragereplicationfactor":
+        case "offsetStorageReplicationFactor": getOrCreateConfiguration(target).setOffsetStorageReplicationFactor(property(camelContext, int.class, value)); return true;
+        case "offsetstoragetopic":
+        case "offsetStorageTopic": getOrCreateConfiguration(target).setOffsetStorageTopic(property(camelContext, java.lang.String.class, value)); return true;
+        case "pollintervalms":
+        case "pollIntervalMs": getOrCreateConfiguration(target).setPollIntervalMs(property(camelContext, java.time.Duration.class, value).toMillis()); return true;
+        case "snapshotdelayms":
+        case "snapshotDelayMs": getOrCreateConfiguration(target).setSnapshotDelayMs(property(camelContext, java.time.Duration.class, value).toMillis()); return true;
+        case "snapshotfetchsize":
+        case "snapshotFetchSize": getOrCreateConfiguration(target).setSnapshotFetchSize(property(camelContext, int.class, value)); return true;
+        case "snapshotmode":
+        case "snapshotMode": getOrCreateConfiguration(target).setSnapshotMode(property(camelContext, java.lang.String.class, value)); return true;
+        case "snapshotselectstatementoverrides":
+        case "snapshotSelectStatementOverrides": getOrCreateConfiguration(target).setSnapshotSelectStatementOverrides(property(camelContext, java.lang.String.class, value)); return true;
+        case "sourcestructversion":
+        case "sourceStructVersion": getOrCreateConfiguration(target).setSourceStructVersion(property(camelContext, java.lang.String.class, value)); return true;
+        case "tableblacklist":
+        case "tableBlacklist": getOrCreateConfiguration(target).setTableBlacklist(property(camelContext, java.lang.String.class, value)); return true;
+        case "tableexcludelist":
+        case "tableExcludeList": getOrCreateConfiguration(target).setTableExcludeList(property(camelContext, java.lang.String.class, value)); return true;
+        case "tableignorebuiltin":
+        case "tableIgnoreBuiltin": getOrCreateConfiguration(target).setTableIgnoreBuiltin(property(camelContext, boolean.class, value)); return true;
+        case "tableincludelist":
+        case "tableIncludeList": getOrCreateConfiguration(target).setTableIncludeList(property(camelContext, java.lang.String.class, value)); return true;
+        case "tablewhitelist":
+        case "tableWhitelist": getOrCreateConfiguration(target).setTableWhitelist(property(camelContext, java.lang.String.class, value)); return true;
+        case "timeprecisionmode":
+        case "timePrecisionMode": getOrCreateConfiguration(target).setTimePrecisionMode(property(camelContext, java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "additionalproperties":
+        case "additionalProperties": return java.util.Map.class;
+        case "autowiredenabled":
+        case "autowiredEnabled": return boolean.class;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return boolean.class;
+        case "columnblacklist":
+        case "columnBlacklist": return java.lang.String.class;
+        case "columnexcludelist":
+        case "columnExcludeList": return java.lang.String.class;
+        case "configuration": return org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration.class;
+        case "databasedbname":
+        case "databaseDbname": return java.lang.String.class;
+        case "databasehistory":
+        case "databaseHistory": return java.lang.String.class;
+        case "databasehistoryfilefilename":
+        case "databaseHistoryFileFilename": return java.lang.String.class;
+        case "databasehistorykafkabootstrapservers":
+        case "databaseHistoryKafkaBootstrapServers": return java.lang.String.class;
+        case "databasehistorykafkarecoveryattempts":
+        case "databaseHistoryKafkaRecoveryAttempts": return int.class;
+        case "databasehistorykafkarecoverypollintervalms":
+        case "databaseHistoryKafkaRecoveryPollIntervalMs": return int.class;
+        case "databasehistorykafkatopic":
+        case "databaseHistoryKafkaTopic": return java.lang.String.class;
+        case "databasehostname":
+        case "databaseHostname": return java.lang.String.class;
+        case "databasepassword":
+        case "databasePassword": return java.lang.String.class;
+        case "databaseport":
+        case "databasePort": return int.class;
+        case "databaseservername":
+        case "databaseServerName": return java.lang.String.class;
+        case "databaseuser":
+        case "databaseUser": return java.lang.String.class;
+        case "decimalhandlingmode":
+        case "decimalHandlingMode": return java.lang.String.class;
+        case "eventprocessingfailurehandlingmode":
+        case "eventProcessingFailureHandlingMode": return java.lang.String.class;
+        case "heartbeatintervalms":
+        case "heartbeatIntervalMs": return int.class;
+        case "heartbeattopicsprefix":
+        case "heartbeatTopicsPrefix": return java.lang.String.class;
+        case "internalkeyconverter":
+        case "internalKeyConverter": return java.lang.String.class;
+        case "internalvalueconverter":
+        case "internalValueConverter": return java.lang.String.class;
+        case "maxbatchsize":
+        case "maxBatchSize": return int.class;
+        case "maxqueuesize":
+        case "maxQueueSize": return int.class;
+        case "offsetcommitpolicy":
+        case "offsetCommitPolicy": return java.lang.String.class;
+        case "offsetcommittimeoutms":
+        case "offsetCommitTimeoutMs": return long.class;
+        case "offsetflushintervalms":
+        case "offsetFlushIntervalMs": return long.class;
+        case "offsetstorage":
+        case "offsetStorage": return java.lang.String.class;
+        case "offsetstoragefilename":
+        case "offsetStorageFileName": return java.lang.String.class;
+        case "offsetstoragepartitions":
+        case "offsetStoragePartitions": return int.class;
+        case "offsetstoragereplicationfactor":
+        case "offsetStorageReplicationFactor": return int.class;
+        case "offsetstoragetopic":
+        case "offsetStorageTopic": return java.lang.String.class;
+        case "pollintervalms":
+        case "pollIntervalMs": return long.class;
+        case "snapshotdelayms":
+        case "snapshotDelayMs": return long.class;
+        case "snapshotfetchsize":
+        case "snapshotFetchSize": return int.class;
+        case "snapshotmode":
+        case "snapshotMode": return java.lang.String.class;
+        case "snapshotselectstatementoverrides":
+        case "snapshotSelectStatementOverrides": return java.lang.String.class;
+        case "sourcestructversion":
+        case "sourceStructVersion": return java.lang.String.class;
+        case "tableblacklist":
+        case "tableBlacklist": return java.lang.String.class;
+        case "tableexcludelist":
+        case "tableExcludeList": return java.lang.String.class;
+        case "tableignorebuiltin":
+        case "tableIgnoreBuiltin": return boolean.class;
+        case "tableincludelist":
+        case "tableIncludeList": return java.lang.String.class;
+        case "tablewhitelist":
+        case "tableWhitelist": return java.lang.String.class;
+        case "timeprecisionmode":
+        case "timePrecisionMode": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        DebeziumDb2Component target = (DebeziumDb2Component) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "additionalproperties":
+        case "additionalProperties": return getOrCreateConfiguration(target).getAdditionalProperties();
+        case "autowiredenabled":
+        case "autowiredEnabled": return target.isAutowiredEnabled();
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
+        case "columnblacklist":
+        case "columnBlacklist": return getOrCreateConfiguration(target).getColumnBlacklist();
+        case "columnexcludelist":
+        case "columnExcludeList": return getOrCreateConfiguration(target).getColumnExcludeList();
+        case "configuration": return target.getConfiguration();
+        case "databasedbname":
+        case "databaseDbname": return getOrCreateConfiguration(target).getDatabaseDbname();
+        case "databasehistory":
+        case "databaseHistory": return getOrCreateConfiguration(target).getDatabaseHistory();
+        case "databasehistoryfilefilename":
+        case "databaseHistoryFileFilename": return getOrCreateConfiguration(target).getDatabaseHistoryFileFilename();
+        case "databasehistorykafkabootstrapservers":
+        case "databaseHistoryKafkaBootstrapServers": return getOrCreateConfiguration(target).getDatabaseHistoryKafkaBootstrapServers();
+        case "databasehistorykafkarecoveryattempts":
+        case "databaseHistoryKafkaRecoveryAttempts": return getOrCreateConfiguration(target).getDatabaseHistoryKafkaRecoveryAttempts();
+        case "databasehistorykafkarecoverypollintervalms":
+        case "databaseHistoryKafkaRecoveryPollIntervalMs": return getOrCreateConfiguration(target).getDatabaseHistoryKafkaRecoveryPollIntervalMs();
+        case "databasehistorykafkatopic":
+        case "databaseHistoryKafkaTopic": return getOrCreateConfiguration(target).getDatabaseHistoryKafkaTopic();
+        case "databasehostname":
+        case "databaseHostname": return getOrCreateConfiguration(target).getDatabaseHostname();
+        case "databasepassword":
+        case "databasePassword": return getOrCreateConfiguration(target).getDatabasePassword();
+        case "databaseport":
+        case "databasePort": return getOrCreateConfiguration(target).getDatabasePort();
+        case "databaseservername":
+        case "databaseServerName": return getOrCreateConfiguration(target).getDatabaseServerName();
+        case "databaseuser":
+        case "databaseUser": return getOrCreateConfiguration(target).getDatabaseUser();
+        case "decimalhandlingmode":
+        case "decimalHandlingMode": return getOrCreateConfiguration(target).getDecimalHandlingMode();
+        case "eventprocessingfailurehandlingmode":
+        case "eventProcessingFailureHandlingMode": return getOrCreateConfiguration(target).getEventProcessingFailureHandlingMode();
+        case "heartbeatintervalms":
+        case "heartbeatIntervalMs": return getOrCreateConfiguration(target).getHeartbeatIntervalMs();
+        case "heartbeattopicsprefix":
+        case "heartbeatTopicsPrefix": return getOrCreateConfiguration(target).getHeartbeatTopicsPrefix();
+        case "internalkeyconverter":
+        case "internalKeyConverter": return getOrCreateConfiguration(target).getInternalKeyConverter();
+        case "internalvalueconverter":
+        case "internalValueConverter": return getOrCreateConfiguration(target).getInternalValueConverter();
+        case "maxbatchsize":
+        case "maxBatchSize": return getOrCreateConfiguration(target).getMaxBatchSize();
+        case "maxqueuesize":
+        case "maxQueueSize": return getOrCreateConfiguration(target).getMaxQueueSize();
+        case "offsetcommitpolicy":
+        case "offsetCommitPolicy": return getOrCreateConfiguration(target).getOffsetCommitPolicy();
+        case "offsetcommittimeoutms":
+        case "offsetCommitTimeoutMs": return getOrCreateConfiguration(target).getOffsetCommitTimeoutMs();
+        case "offsetflushintervalms":
+        case "offsetFlushIntervalMs": return getOrCreateConfiguration(target).getOffsetFlushIntervalMs();
+        case "offsetstorage":
+        case "offsetStorage": return getOrCreateConfiguration(target).getOffsetStorage();
+        case "offsetstoragefilename":
+        case "offsetStorageFileName": return getOrCreateConfiguration(target).getOffsetStorageFileName();
+        case "offsetstoragepartitions":
+        case "offsetStoragePartitions": return getOrCreateConfiguration(target).getOffsetStoragePartitions();
+        case "offsetstoragereplicationfactor":
+        case "offsetStorageReplicationFactor": return getOrCreateConfiguration(target).getOffsetStorageReplicationFactor();
+        case "offsetstoragetopic":
+        case "offsetStorageTopic": return getOrCreateConfiguration(target).getOffsetStorageTopic();
+        case "pollintervalms":
+        case "pollIntervalMs": return getOrCreateConfiguration(target).getPollIntervalMs();
+        case "snapshotdelayms":
+        case "snapshotDelayMs": return getOrCreateConfiguration(target).getSnapshotDelayMs();
+        case "snapshotfetchsize":
+        case "snapshotFetchSize": return getOrCreateConfiguration(target).getSnapshotFetchSize();
+        case "snapshotmode":
+        case "snapshotMode": return getOrCreateConfiguration(target).getSnapshotMode();
+        case "snapshotselectstatementoverrides":
+        case "snapshotSelectStatementOverrides": return getOrCreateConfiguration(target).getSnapshotSelectStatementOverrides();
+        case "sourcestructversion":
+        case "sourceStructVersion": return getOrCreateConfiguration(target).getSourceStructVersion();
+        case "tableblacklist":
+        case "tableBlacklist": return getOrCreateConfiguration(target).getTableBlacklist();
+        case "tableexcludelist":
+        case "tableExcludeList": return getOrCreateConfiguration(target).getTableExcludeList();
+        case "tableignorebuiltin":
+        case "tableIgnoreBuiltin": return getOrCreateConfiguration(target).isTableIgnoreBuiltin();
+        case "tableincludelist":
+        case "tableIncludeList": return getOrCreateConfiguration(target).getTableIncludeList();
+        case "tablewhitelist":
+        case "tableWhitelist": return getOrCreateConfiguration(target).getTableWhitelist();
+        case "timeprecisionmode":
+        case "timePrecisionMode": return getOrCreateConfiguration(target).getTimePrecisionMode();
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getCollectionValueType(Object target, String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "additionalproperties":
+        case "additionalProperties": return java.lang.Object.class;
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-debezium/camel-debezium-db2/src/generated/java/org/apache/camel/component/debezium/DebeziumDb2EndpointConfigurer.java b/components/camel-debezium/camel-debezium-db2/src/generated/java/org/apache/camel/component/debezium/DebeziumDb2EndpointConfigurer.java
new file mode 100644
index 00000000000..b972542c028
--- /dev/null
+++ b/components/camel-debezium/camel-debezium-db2/src/generated/java/org/apache/camel/component/debezium/DebeziumDb2EndpointConfigurer.java
@@ -0,0 +1,328 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.debezium;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class DebeziumDb2EndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        DebeziumDb2Endpoint target = (DebeziumDb2Endpoint) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "additionalproperties":
+        case "additionalProperties": target.getConfiguration().setAdditionalProperties(property(camelContext, java.util.Map.class, value)); return true;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
+        case "columnblacklist":
+        case "columnBlacklist": target.getConfiguration().setColumnBlacklist(property(camelContext, java.lang.String.class, value)); return true;
+        case "columnexcludelist":
+        case "columnExcludeList": target.getConfiguration().setColumnExcludeList(property(camelContext, java.lang.String.class, value)); return true;
+        case "databasedbname":
+        case "databaseDbname": target.getConfiguration().setDatabaseDbname(property(camelContext, java.lang.String.class, value)); return true;
+        case "databasehistory":
+        case "databaseHistory": target.getConfiguration().setDatabaseHistory(property(camelContext, java.lang.String.class, value)); return true;
+        case "databasehistoryfilefilename":
+        case "databaseHistoryFileFilename": target.getConfiguration().setDatabaseHistoryFileFilename(property(camelContext, java.lang.String.class, value)); return true;
+        case "databasehistorykafkabootstrapservers":
+        case "databaseHistoryKafkaBootstrapServers": target.getConfiguration().setDatabaseHistoryKafkaBootstrapServers(property(camelContext, java.lang.String.class, value)); return true;
+        case "databasehistorykafkarecoveryattempts":
+        case "databaseHistoryKafkaRecoveryAttempts": target.getConfiguration().setDatabaseHistoryKafkaRecoveryAttempts(property(camelContext, int.class, value)); return true;
+        case "databasehistorykafkarecoverypollintervalms":
+        case "databaseHistoryKafkaRecoveryPollIntervalMs": target.getConfiguration().setDatabaseHistoryKafkaRecoveryPollIntervalMs(property(camelContext, int.class, value)); return true;
+        case "databasehistorykafkatopic":
+        case "databaseHistoryKafkaTopic": target.getConfiguration().setDatabaseHistoryKafkaTopic(property(camelContext, java.lang.String.class, value)); return true;
+        case "databasehostname":
+        case "databaseHostname": target.getConfiguration().setDatabaseHostname(property(camelContext, java.lang.String.class, value)); return true;
+        case "databasepassword":
+        case "databasePassword": target.getConfiguration().setDatabasePassword(property(camelContext, java.lang.String.class, value)); return true;
+        case "databaseport":
+        case "databasePort": target.getConfiguration().setDatabasePort(property(camelContext, int.class, value)); return true;
+        case "databaseservername":
+        case "databaseServerName": target.getConfiguration().setDatabaseServerName(property(camelContext, java.lang.String.class, value)); return true;
+        case "databaseuser":
+        case "databaseUser": target.getConfiguration().setDatabaseUser(property(camelContext, java.lang.String.class, value)); return true;
+        case "decimalhandlingmode":
+        case "decimalHandlingMode": target.getConfiguration().setDecimalHandlingMode(property(camelContext, java.lang.String.class, value)); return true;
+        case "eventprocessingfailurehandlingmode":
+        case "eventProcessingFailureHandlingMode": target.getConfiguration().setEventProcessingFailureHandlingMode(property(camelContext, java.lang.String.class, value)); return true;
+        case "exceptionhandler":
+        case "exceptionHandler": target.setExceptionHandler(property(camelContext, org.apache.camel.spi.ExceptionHandler.class, value)); return true;
+        case "exchangepattern":
+        case "exchangePattern": target.setExchangePattern(property(camelContext, org.apache.camel.ExchangePattern.class, value)); return true;
+        case "heartbeatintervalms":
+        case "heartbeatIntervalMs": target.getConfiguration().setHeartbeatIntervalMs(property(camelContext, int.class, value)); return true;
+        case "heartbeattopicsprefix":
+        case "heartbeatTopicsPrefix": target.getConfiguration().setHeartbeatTopicsPrefix(property(camelContext, java.lang.String.class, value)); return true;
+        case "internalkeyconverter":
+        case "internalKeyConverter": target.getConfiguration().setInternalKeyConverter(property(camelContext, java.lang.String.class, value)); return true;
+        case "internalvalueconverter":
+        case "internalValueConverter": target.getConfiguration().setInternalValueConverter(property(camelContext, java.lang.String.class, value)); return true;
+        case "maxbatchsize":
+        case "maxBatchSize": target.getConfiguration().setMaxBatchSize(property(camelContext, int.class, value)); return true;
+        case "maxqueuesize":
+        case "maxQueueSize": target.getConfiguration().setMaxQueueSize(property(camelContext, int.class, value)); return true;
+        case "offsetcommitpolicy":
+        case "offsetCommitPolicy": target.getConfiguration().setOffsetCommitPolicy(property(camelContext, java.lang.String.class, value)); return true;
+        case "offsetcommittimeoutms":
+        case "offsetCommitTimeoutMs": target.getConfiguration().setOffsetCommitTimeoutMs(property(camelContext, java.time.Duration.class, value).toMillis()); return true;
+        case "offsetflushintervalms":
+        case "offsetFlushIntervalMs": target.getConfiguration().setOffsetFlushIntervalMs(property(camelContext, java.time.Duration.class, value).toMillis()); return true;
+        case "offsetstorage":
+        case "offsetStorage": target.getConfiguration().setOffsetStorage(property(camelContext, java.lang.String.class, value)); return true;
+        case "offsetstoragefilename":
+        case "offsetStorageFileName": target.getConfiguration().setOffsetStorageFileName(property(camelContext, java.lang.String.class, value)); return true;
+        case "offsetstoragepartitions":
+        case "offsetStoragePartitions": target.getConfiguration().setOffsetStoragePartitions(property(camelContext, int.class, value)); return true;
+        case "offsetstoragereplicationfactor":
+        case "offsetStorageReplicationFactor": target.getConfiguration().setOffsetStorageReplicationFactor(property(camelContext, int.class, value)); return true;
+        case "offsetstoragetopic":
+        case "offsetStorageTopic": target.getConfiguration().setOffsetStorageTopic(property(camelContext, java.lang.String.class, value)); return true;
+        case "pollintervalms":
+        case "pollIntervalMs": target.getConfiguration().setPollIntervalMs(property(camelContext, java.time.Duration.class, value).toMillis()); return true;
+        case "snapshotdelayms":
+        case "snapshotDelayMs": target.getConfiguration().setSnapshotDelayMs(property(camelContext, java.time.Duration.class, value).toMillis()); return true;
+        case "snapshotfetchsize":
+        case "snapshotFetchSize": target.getConfiguration().setSnapshotFetchSize(property(camelContext, int.class, value)); return true;
+        case "snapshotmode":
+        case "snapshotMode": target.getConfiguration().setSnapshotMode(property(camelContext, java.lang.String.class, value)); return true;
+        case "snapshotselectstatementoverrides":
+        case "snapshotSelectStatementOverrides": target.getConfiguration().setSnapshotSelectStatementOverrides(property(camelContext, java.lang.String.class, value)); return true;
+        case "sourcestructversion":
+        case "sourceStructVersion": target.getConfiguration().setSourceStructVersion(property(camelContext, java.lang.String.class, value)); return true;
+        case "tableblacklist":
+        case "tableBlacklist": target.getConfiguration().setTableBlacklist(property(camelContext, java.lang.String.class, value)); return true;
+        case "tableexcludelist":
+        case "tableExcludeList": target.getConfiguration().setTableExcludeList(property(camelContext, java.lang.String.class, value)); return true;
+        case "tableignorebuiltin":
+        case "tableIgnoreBuiltin": target.getConfiguration().setTableIgnoreBuiltin(property(camelContext, boolean.class, value)); return true;
+        case "tableincludelist":
+        case "tableIncludeList": target.getConfiguration().setTableIncludeList(property(camelContext, java.lang.String.class, value)); return true;
+        case "tablewhitelist":
+        case "tableWhitelist": target.getConfiguration().setTableWhitelist(property(camelContext, java.lang.String.class, value)); return true;
+        case "timeprecisionmode":
+        case "timePrecisionMode": target.getConfiguration().setTimePrecisionMode(property(camelContext, java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "additionalproperties":
+        case "additionalProperties": return java.util.Map.class;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return boolean.class;
+        case "columnblacklist":
+        case "columnBlacklist": return java.lang.String.class;
+        case "columnexcludelist":
+        case "columnExcludeList": return java.lang.String.class;
+        case "databasedbname":
+        case "databaseDbname": return java.lang.String.class;
+        case "databasehistory":
+        case "databaseHistory": return java.lang.String.class;
+        case "databasehistoryfilefilename":
+        case "databaseHistoryFileFilename": return java.lang.String.class;
+        case "databasehistorykafkabootstrapservers":
+        case "databaseHistoryKafkaBootstrapServers": return java.lang.String.class;
+        case "databasehistorykafkarecoveryattempts":
+        case "databaseHistoryKafkaRecoveryAttempts": return int.class;
+        case "databasehistorykafkarecoverypollintervalms":
+        case "databaseHistoryKafkaRecoveryPollIntervalMs": return int.class;
+        case "databasehistorykafkatopic":
+        case "databaseHistoryKafkaTopic": return java.lang.String.class;
+        case "databasehostname":
+        case "databaseHostname": return java.lang.String.class;
+        case "databasepassword":
+        case "databasePassword": return java.lang.String.class;
+        case "databaseport":
+        case "databasePort": return int.class;
+        case "databaseservername":
+        case "databaseServerName": return java.lang.String.class;
+        case "databaseuser":
+        case "databaseUser": return java.lang.String.class;
+        case "decimalhandlingmode":
+        case "decimalHandlingMode": return java.lang.String.class;
+        case "eventprocessingfailurehandlingmode":
+        case "eventProcessingFailureHandlingMode": return java.lang.String.class;
+        case "exceptionhandler":
+        case "exceptionHandler": return org.apache.camel.spi.ExceptionHandler.class;
+        case "exchangepattern":
+        case "exchangePattern": return org.apache.camel.ExchangePattern.class;
+        case "heartbeatintervalms":
+        case "heartbeatIntervalMs": return int.class;
+        case "heartbeattopicsprefix":
+        case "heartbeatTopicsPrefix": return java.lang.String.class;
+        case "internalkeyconverter":
+        case "internalKeyConverter": return java.lang.String.class;
+        case "internalvalueconverter":
+        case "internalValueConverter": return java.lang.String.class;
+        case "maxbatchsize":
+        case "maxBatchSize": return int.class;
+        case "maxqueuesize":
+        case "maxQueueSize": return int.class;
+        case "offsetcommitpolicy":
+        case "offsetCommitPolicy": return java.lang.String.class;
+        case "offsetcommittimeoutms":
+        case "offsetCommitTimeoutMs": return long.class;
+        case "offsetflushintervalms":
+        case "offsetFlushIntervalMs": return long.class;
+        case "offsetstorage":
+        case "offsetStorage": return java.lang.String.class;
+        case "offsetstoragefilename":
+        case "offsetStorageFileName": return java.lang.String.class;
+        case "offsetstoragepartitions":
+        case "offsetStoragePartitions": return int.class;
+        case "offsetstoragereplicationfactor":
+        case "offsetStorageReplicationFactor": return int.class;
+        case "offsetstoragetopic":
+        case "offsetStorageTopic": return java.lang.String.class;
+        case "pollintervalms":
+        case "pollIntervalMs": return long.class;
+        case "snapshotdelayms":
+        case "snapshotDelayMs": return long.class;
+        case "snapshotfetchsize":
+        case "snapshotFetchSize": return int.class;
+        case "snapshotmode":
+        case "snapshotMode": return java.lang.String.class;
+        case "snapshotselectstatementoverrides":
+        case "snapshotSelectStatementOverrides": return java.lang.String.class;
+        case "sourcestructversion":
+        case "sourceStructVersion": return java.lang.String.class;
+        case "tableblacklist":
+        case "tableBlacklist": return java.lang.String.class;
+        case "tableexcludelist":
+        case "tableExcludeList": return java.lang.String.class;
+        case "tableignorebuiltin":
+        case "tableIgnoreBuiltin": return boolean.class;
+        case "tableincludelist":
+        case "tableIncludeList": return java.lang.String.class;
+        case "tablewhitelist":
+        case "tableWhitelist": return java.lang.String.class;
+        case "timeprecisionmode":
+        case "timePrecisionMode": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        DebeziumDb2Endpoint target = (DebeziumDb2Endpoint) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "additionalproperties":
+        case "additionalProperties": return target.getConfiguration().getAdditionalProperties();
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
+        case "columnblacklist":
+        case "columnBlacklist": return target.getConfiguration().getColumnBlacklist();
+        case "columnexcludelist":
+        case "columnExcludeList": return target.getConfiguration().getColumnExcludeList();
+        case "databasedbname":
+        case "databaseDbname": return target.getConfiguration().getDatabaseDbname();
+        case "databasehistory":
+        case "databaseHistory": return target.getConfiguration().getDatabaseHistory();
+        case "databasehistoryfilefilename":
+        case "databaseHistoryFileFilename": return target.getConfiguration().getDatabaseHistoryFileFilename();
+        case "databasehistorykafkabootstrapservers":
+        case "databaseHistoryKafkaBootstrapServers": return target.getConfiguration().getDatabaseHistoryKafkaBootstrapServers();
+        case "databasehistorykafkarecoveryattempts":
+        case "databaseHistoryKafkaRecoveryAttempts": return target.getConfiguration().getDatabaseHistoryKafkaRecoveryAttempts();
+        case "databasehistorykafkarecoverypollintervalms":
+        case "databaseHistoryKafkaRecoveryPollIntervalMs": return target.getConfiguration().getDatabaseHistoryKafkaRecoveryPollIntervalMs();
+        case "databasehistorykafkatopic":
+        case "databaseHistoryKafkaTopic": return target.getConfiguration().getDatabaseHistoryKafkaTopic();
+        case "databasehostname":
+        case "databaseHostname": return target.getConfiguration().getDatabaseHostname();
+        case "databasepassword":
+        case "databasePassword": return target.getConfiguration().getDatabasePassword();
+        case "databaseport":
+        case "databasePort": return target.getConfiguration().getDatabasePort();
+        case "databaseservername":
+        case "databaseServerName": return target.getConfiguration().getDatabaseServerName();
+        case "databaseuser":
+        case "databaseUser": return target.getConfiguration().getDatabaseUser();
+        case "decimalhandlingmode":
+        case "decimalHandlingMode": return target.getConfiguration().getDecimalHandlingMode();
+        case "eventprocessingfailurehandlingmode":
+        case "eventProcessingFailureHandlingMode": return target.getConfiguration().getEventProcessingFailureHandlingMode();
+        case "exceptionhandler":
+        case "exceptionHandler": return target.getExceptionHandler();
+        case "exchangepattern":
+        case "exchangePattern": return target.getExchangePattern();
+        case "heartbeatintervalms":
+        case "heartbeatIntervalMs": return target.getConfiguration().getHeartbeatIntervalMs();
+        case "heartbeattopicsprefix":
+        case "heartbeatTopicsPrefix": return target.getConfiguration().getHeartbeatTopicsPrefix();
+        case "internalkeyconverter":
+        case "internalKeyConverter": return target.getConfiguration().getInternalKeyConverter();
+        case "internalvalueconverter":
+        case "internalValueConverter": return target.getConfiguration().getInternalValueConverter();
+        case "maxbatchsize":
+        case "maxBatchSize": return target.getConfiguration().getMaxBatchSize();
+        case "maxqueuesize":
+        case "maxQueueSize": return target.getConfiguration().getMaxQueueSize();
+        case "offsetcommitpolicy":
+        case "offsetCommitPolicy": return target.getConfiguration().getOffsetCommitPolicy();
+        case "offsetcommittimeoutms":
+        case "offsetCommitTimeoutMs": return target.getConfiguration().getOffsetCommitTimeoutMs();
+        case "offsetflushintervalms":
+        case "offsetFlushIntervalMs": return target.getConfiguration().getOffsetFlushIntervalMs();
+        case "offsetstorage":
+        case "offsetStorage": return target.getConfiguration().getOffsetStorage();
+        case "offsetstoragefilename":
+        case "offsetStorageFileName": return target.getConfiguration().getOffsetStorageFileName();
+        case "offsetstoragepartitions":
+        case "offsetStoragePartitions": return target.getConfiguration().getOffsetStoragePartitions();
+        case "offsetstoragereplicationfactor":
+        case "offsetStorageReplicationFactor": return target.getConfiguration().getOffsetStorageReplicationFactor();
+        case "offsetstoragetopic":
+        case "offsetStorageTopic": return target.getConfiguration().getOffsetStorageTopic();
+        case "pollintervalms":
+        case "pollIntervalMs": return target.getConfiguration().getPollIntervalMs();
+        case "snapshotdelayms":
+        case "snapshotDelayMs": return target.getConfiguration().getSnapshotDelayMs();
+        case "snapshotfetchsize":
+        case "snapshotFetchSize": return target.getConfiguration().getSnapshotFetchSize();
+        case "snapshotmode":
+        case "snapshotMode": return target.getConfiguration().getSnapshotMode();
+        case "snapshotselectstatementoverrides":
+        case "snapshotSelectStatementOverrides": return target.getConfiguration().getSnapshotSelectStatementOverrides();
+        case "sourcestructversion":
+        case "sourceStructVersion": return target.getConfiguration().getSourceStructVersion();
+        case "tableblacklist":
+        case "tableBlacklist": return target.getConfiguration().getTableBlacklist();
+        case "tableexcludelist":
+        case "tableExcludeList": return target.getConfiguration().getTableExcludeList();
+        case "tableignorebuiltin":
+        case "tableIgnoreBuiltin": return target.getConfiguration().isTableIgnoreBuiltin();
+        case "tableincludelist":
+        case "tableIncludeList": return target.getConfiguration().getTableIncludeList();
+        case "tablewhitelist":
+        case "tableWhitelist": return target.getConfiguration().getTableWhitelist();
+        case "timeprecisionmode":
+        case "timePrecisionMode": return target.getConfiguration().getTimePrecisionMode();
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getCollectionValueType(Object target, String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "additionalproperties":
+        case "additionalProperties": return java.lang.Object.class;
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-debezium/camel-debezium-db2/src/generated/java/org/apache/camel/component/debezium/DebeziumDb2EndpointUriFactory.java b/components/camel-debezium/camel-debezium-db2/src/generated/java/org/apache/camel/component/debezium/DebeziumDb2EndpointUriFactory.java
new file mode 100644
index 00000000000..14f13fca8c2
--- /dev/null
+++ b/components/camel-debezium/camel-debezium-db2/src/generated/java/org/apache/camel/component/debezium/DebeziumDb2EndpointUriFactory.java
@@ -0,0 +1,116 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.debezium;
+
+import java.net.URISyntaxException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.camel.spi.EndpointUriFactory;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+public class DebeziumDb2EndpointUriFactory extends org.apache.camel.support.component.EndpointUriFactorySupport implements EndpointUriFactory {
+
+    private static final String BASE = ":name";
+
+    private static final Set<String> PROPERTY_NAMES;
+    private static final Set<String> SECRET_PROPERTY_NAMES;
+    private static final Set<String> MULTI_VALUE_PREFIXES;
+    static {
+        Set<String> props = new HashSet<>(47);
+        props.add("additionalProperties");
+        props.add("bridgeErrorHandler");
+        props.add("columnBlacklist");
+        props.add("columnExcludeList");
+        props.add("databaseDbname");
+        props.add("databaseHistory");
+        props.add("databaseHistoryFileFilename");
+        props.add("databaseHistoryKafkaBootstrapServers");
+        props.add("databaseHistoryKafkaRecoveryAttempts");
+        props.add("databaseHistoryKafkaRecoveryPollIntervalMs");
+        props.add("databaseHistoryKafkaTopic");
+        props.add("databaseHostname");
+        props.add("databasePassword");
+        props.add("databasePort");
+        props.add("databaseServerName");
+        props.add("databaseUser");
+        props.add("decimalHandlingMode");
+        props.add("eventProcessingFailureHandlingMode");
+        props.add("exceptionHandler");
+        props.add("exchangePattern");
+        props.add("heartbeatIntervalMs");
+        props.add("heartbeatTopicsPrefix");
+        props.add("internalKeyConverter");
+        props.add("internalValueConverter");
+        props.add("maxBatchSize");
+        props.add("maxQueueSize");
+        props.add("name");
+        props.add("offsetCommitPolicy");
+        props.add("offsetCommitTimeoutMs");
+        props.add("offsetFlushIntervalMs");
+        props.add("offsetStorage");
+        props.add("offsetStorageFileName");
+        props.add("offsetStoragePartitions");
+        props.add("offsetStorageReplicationFactor");
+        props.add("offsetStorageTopic");
+        props.add("pollIntervalMs");
+        props.add("snapshotDelayMs");
+        props.add("snapshotFetchSize");
+        props.add("snapshotMode");
+        props.add("snapshotSelectStatementOverrides");
+        props.add("sourceStructVersion");
+        props.add("tableBlacklist");
+        props.add("tableExcludeList");
+        props.add("tableIgnoreBuiltin");
+        props.add("tableIncludeList");
+        props.add("tableWhitelist");
+        props.add("timePrecisionMode");
+        PROPERTY_NAMES = Collections.unmodifiableSet(props);
+        SECRET_PROPERTY_NAMES = Collections.emptySet();
+        Set<String> prefixes = new HashSet<>(1);
+        prefixes.add("additionalProperties.");
+        MULTI_VALUE_PREFIXES = Collections.unmodifiableSet(prefixes);
+    }
+
+    @Override
+    public boolean isEnabled(String scheme) {
+        return "debezium-db2".equals(scheme);
+    }
+
+    @Override
+    public String buildUri(String scheme, Map<String, Object> properties, boolean encode) throws URISyntaxException {
+        String syntax = scheme + BASE;
+        String uri = syntax;
+
+        Map<String, Object> copy = new HashMap<>(properties);
+
+        uri = buildPathParameter(syntax, uri, "name", null, true, copy);
+        uri = buildQueryParameters(uri, copy, encode);
+        return uri;
+    }
+
+    @Override
+    public Set<String> propertyNames() {
+        return PROPERTY_NAMES;
+    }
+
+    @Override
+    public Set<String> secretPropertyNames() {
+        return SECRET_PROPERTY_NAMES;
+    }
+
+    @Override
+    public Set<String> multiValuePrefixes() {
+        return MULTI_VALUE_PREFIXES;
+    }
+
+    @Override
+    public boolean isLenientProperties() {
+        return false;
+    }
+}
+
diff --git a/components/camel-debezium/camel-debezium-db2/src/generated/java/org/apache/camel/component/debezium/configuration/Db2ConnectorEmbeddedDebeziumConfiguration.java b/components/camel-debezium/camel-debezium-db2/src/generated/java/org/apache/camel/component/debezium/configuration/Db2ConnectorEmbeddedDebeziumConfiguration.java
new file mode 100644
index 00000000000..ad1bb699508
--- /dev/null
+++ b/components/camel-debezium/camel-debezium-db2/src/generated/java/org/apache/camel/component/debezium/configuration/Db2ConnectorEmbeddedDebeziumConfiguration.java
@@ -0,0 +1,558 @@
+package org.apache.camel.component.debezium.configuration;
+
+import io.debezium.config.Configuration;
+import io.debezium.connector.db2.Db2Connector;
+import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriParams;
+
+@UriParams
+public class Db2ConnectorEmbeddedDebeziumConfiguration
+        extends
+            EmbeddedDebeziumConfiguration {
+
+    private static final String LABEL_NAME = "consumer,db2";
+    @UriParam(label = LABEL_NAME, defaultValue = "8192")
+    private int maxQueueSize = 8192;
+    @UriParam(label = LABEL_NAME)
+    private String databaseHistoryKafkaTopic;
+    @UriParam(label = LABEL_NAME)
+    private String columnBlacklist;
+    @UriParam(label = LABEL_NAME, defaultValue = "0ms", javaType = "java.time.Duration")
+    private long snapshotDelayMs = 0;
+    @UriParam(label = LABEL_NAME, defaultValue = "100")
+    private int databaseHistoryKafkaRecoveryAttempts = 100;
+    @UriParam(label = LABEL_NAME)
+    private String tableBlacklist;
+    @UriParam(label = LABEL_NAME)
+    private String tableWhitelist;
+    @UriParam(label = LABEL_NAME, defaultValue = "precise")
+    private String decimalHandlingMode = "precise";
+    @UriParam(label = LABEL_NAME, defaultValue = "100ms", javaType = "java.time.Duration")
+    private int databaseHistoryKafkaRecoveryPollIntervalMs = 100;
+    @UriParam(label = LABEL_NAME, defaultValue = "500ms", javaType = "java.time.Duration")
+    private long pollIntervalMs = 500;
+    @UriParam(label = LABEL_NAME, defaultValue = "__debezium-heartbeat")
+    private String heartbeatTopicsPrefix = "__debezium-heartbeat";
+    @UriParam(label = LABEL_NAME, defaultValue = "true")
+    private boolean tableIgnoreBuiltin = true;
+    @UriParam(label = LABEL_NAME)
+    private int snapshotFetchSize;
+    @UriParam(label = LABEL_NAME)
+    private String databaseHistoryFileFilename;
+    @UriParam(label = LABEL_NAME)
+    private String databaseUser;
+    @UriParam(label = LABEL_NAME)
+    private String databaseDbname;
+    @UriParam(label = LABEL_NAME)
+    private String snapshotSelectStatementOverrides;
+    @UriParam(label = LABEL_NAME)
+    private String databaseHistoryKafkaBootstrapServers;
+    @UriParam(label = LABEL_NAME, defaultValue = "adaptive")
+    private String timePrecisionMode = "adaptive";
+    @UriParam(label = LABEL_NAME)
+    @Metadata(required = true)
+    private String databaseServerName;
+    @UriParam(label = LABEL_NAME, defaultValue = "0ms", javaType = "java.time.Duration")
+    private int heartbeatIntervalMs = 0;
+    @UriParam(label = LABEL_NAME, defaultValue = "v2")
+    private String sourceStructVersion = "v2";
+    @UriParam(label = LABEL_NAME, defaultValue = "fail")
+    private String eventProcessingFailureHandlingMode = "fail";
+    @UriParam(label = LABEL_NAME, defaultValue = "50000")
+    private int databasePort = 50000;
+    @UriParam(label = LABEL_NAME)
+    private String columnExcludeList;
+    @UriParam(label = LABEL_NAME)
+    private String tableExcludeList;
+    @UriParam(label = LABEL_NAME)
+    private String databaseHostname;
+    @UriParam(label = LABEL_NAME)
+    @Metadata(required = true)
+    private String databasePassword;
+    @UriParam(label = LABEL_NAME)
+    private String tableIncludeList;
+    @UriParam(label = LABEL_NAME, defaultValue = "2048")
+    private int maxBatchSize = 2048;
+    @UriParam(label = LABEL_NAME, defaultValue = "initial")
+    private String snapshotMode = "initial";
+    @UriParam(label = LABEL_NAME, defaultValue = "class io.debezium.relational.history.KafkaDatabaseHistory")
+    private String databaseHistory = "io.debezium.relational.history.KafkaDatabaseHistory";
+
+    /**
+     * Maximum size of the queue for change events read from the database log
+     * but not yet recorded or forwarded. Defaults to 8192, and should always be
+     * larger than the maximum batch size.
+     */
+    public void setMaxQueueSize(int maxQueueSize) {
+        this.maxQueueSize = maxQueueSize;
+    }
+
+    public int getMaxQueueSize() {
+        return maxQueueSize;
+    }
+
+    /**
+     * The name of the topic for the database schema history
+     */
+    public void setDatabaseHistoryKafkaTopic(String databaseHistoryKafkaTopic) {
+        this.databaseHistoryKafkaTopic = databaseHistoryKafkaTopic;
+    }
+
+    public String getDatabaseHistoryKafkaTopic() {
+        return databaseHistoryKafkaTopic;
+    }
+
+    /**
+     * Regular expressions matching columns to exclude from change events
+     * (deprecated, use "column.exclude.list" instead)
+     */
+    public void setColumnBlacklist(String columnBlacklist) {
+        this.columnBlacklist = columnBlacklist;
+    }
+
+    public String getColumnBlacklist() {
+        return columnBlacklist;
+    }
+
+    /**
+     * A delay period before a snapshot will begin, given in milliseconds.
+     * Defaults to 0 ms.
+     */
+    public void setSnapshotDelayMs(long snapshotDelayMs) {
+        this.snapshotDelayMs = snapshotDelayMs;
+    }
+
+    public long getSnapshotDelayMs() {
+        return snapshotDelayMs;
+    }
+
+    /**
+     * The number of attempts in a row that no data are returned from Kafka
+     * before recover completes. The maximum amount of time to wait after
+     * receiving no data is (recovery.attempts) x (recovery.poll.interval.ms).
+     */
+    public void setDatabaseHistoryKafkaRecoveryAttempts(
+            int databaseHistoryKafkaRecoveryAttempts) {
+        this.databaseHistoryKafkaRecoveryAttempts = databaseHistoryKafkaRecoveryAttempts;
+    }
+
+    public int getDatabaseHistoryKafkaRecoveryAttempts() {
+        return databaseHistoryKafkaRecoveryAttempts;
+    }
+
+    /**
+     * A comma-separated list of regular expressions that match the
+     * fully-qualified names of tables to be excluded from monitoring
+     * (deprecated, use "table.exclude.list" instead)
+     */
+    public void setTableBlacklist(String tableBlacklist) {
+        this.tableBlacklist = tableBlacklist;
+    }
+
+    public String getTableBlacklist() {
+        return tableBlacklist;
+    }
+
+    /**
+     * The tables for which changes are to be captured (deprecated, use
+     * "table.include.list" instead)
+     */
+    public void setTableWhitelist(String tableWhitelist) {
+        this.tableWhitelist = tableWhitelist;
+    }
+
+    public String getTableWhitelist() {
+        return tableWhitelist;
+    }
+
+    /**
+     * Specify how DECIMAL and NUMERIC columns should be represented in change
+     * events, including:'precise' (the default) uses java.math.BigDecimal to
+     * represent values, which are encoded in the change events using a binary
+     * representation and Kafka Connect's
+     * 'org.apache.kafka.connect.data.Decimal' type; 'string' uses string to
+     * represent values; 'double' represents values using Java's 'double', which
+     * may not offer the precision but will be far easier to use in consumers.
+     */
+    public void setDecimalHandlingMode(String decimalHandlingMode) {
+        this.decimalHandlingMode = decimalHandlingMode;
+    }
+
+    public String getDecimalHandlingMode() {
+        return decimalHandlingMode;
+    }
+
+    /**
+     * The number of milliseconds to wait while polling for persisted data
+     * during recovery.
+     */
+    public void setDatabaseHistoryKafkaRecoveryPollIntervalMs(
+            int databaseHistoryKafkaRecoveryPollIntervalMs) {
+        this.databaseHistoryKafkaRecoveryPollIntervalMs = databaseHistoryKafkaRecoveryPollIntervalMs;
+    }
+
+    public int getDatabaseHistoryKafkaRecoveryPollIntervalMs() {
+        return databaseHistoryKafkaRecoveryPollIntervalMs;
+    }
+
+    /**
+     * Time to wait for new change events to appear after receiving no events,
+     * given in milliseconds. Defaults to 500 ms.
+     */
+    public void setPollIntervalMs(long pollIntervalMs) {
+        this.pollIntervalMs = pollIntervalMs;
+    }
+
+    public long getPollIntervalMs() {
+        return pollIntervalMs;
+    }
+
+    /**
+     * The prefix that is used to name heartbeat topics.Defaults to
+     * __debezium-heartbeat.
+     */
+    public void setHeartbeatTopicsPrefix(String heartbeatTopicsPrefix) {
+        this.heartbeatTopicsPrefix = heartbeatTopicsPrefix;
+    }
+
+    public String getHeartbeatTopicsPrefix() {
+        return heartbeatTopicsPrefix;
+    }
+
+    /**
+     * Flag specifying whether built-in tables should be ignored.
+     */
+    public void setTableIgnoreBuiltin(boolean tableIgnoreBuiltin) {
+        this.tableIgnoreBuiltin = tableIgnoreBuiltin;
+    }
+
+    public boolean isTableIgnoreBuiltin() {
+        return tableIgnoreBuiltin;
+    }
+
+    /**
+     * The maximum number of records that should be loaded into memory while
+     * performing a snapshot
+     */
+    public void setSnapshotFetchSize(int snapshotFetchSize) {
+        this.snapshotFetchSize = snapshotFetchSize;
+    }
+
+    public int getSnapshotFetchSize() {
+        return snapshotFetchSize;
+    }
+
+    /**
+     * The path to the file that will be used to record the database history
+     */
+    public void setDatabaseHistoryFileFilename(
+            String databaseHistoryFileFilename) {
+        this.databaseHistoryFileFilename = databaseHistoryFileFilename;
+    }
+
+    public String getDatabaseHistoryFileFilename() {
+        return databaseHistoryFileFilename;
+    }
+
+    /**
+     * Name of the database user to be used when connecting to the database.
+     */
+    public void setDatabaseUser(String databaseUser) {
+        this.databaseUser = databaseUser;
+    }
+
+    public String getDatabaseUser() {
+        return databaseUser;
+    }
+
+    /**
+     * The name of the database from which the connector should capture changes
+     */
+    public void setDatabaseDbname(String databaseDbname) {
+        this.databaseDbname = databaseDbname;
+    }
+
+    public String getDatabaseDbname() {
+        return databaseDbname;
+    }
+
+    /**
+     *  This property contains a comma-separated list of fully-qualified tables
+     * (DB_NAME.TABLE_NAME) or (SCHEMA_NAME.TABLE_NAME), depending on
+     * thespecific connectors. Select statements for the individual tables are
+     * specified in further configuration properties, one for each table,
+     * identified by the id
+     * 'snapshot.select.statement.overrides.[DB_NAME].[TABLE_NAME]' or
+     * 'snapshot.select.statement.overrides.[SCHEMA_NAME].[TABLE_NAME]',
+     * respectively. The value of those properties is the select statement to
+     * use when retrieving data from the specific table during snapshotting. A
+     * possible use case for large append-only tables is setting a specific
+     * point where to start (resume) snapshotting, in case a previous
+     * snapshotting was interrupted.
+     */
+    public void setSnapshotSelectStatementOverrides(
+            String snapshotSelectStatementOverrides) {
+        this.snapshotSelectStatementOverrides = snapshotSelectStatementOverrides;
+    }
+
+    public String getSnapshotSelectStatementOverrides() {
+        return snapshotSelectStatementOverrides;
+    }
+
+    /**
+     * A list of host/port pairs that the connector will use for establishing
+     * the initial connection to the Kafka cluster for retrieving database
+     * schema history previously stored by the connector. This should point to
+     * the same Kafka cluster used by the Kafka Connect process.
+     */
+    public void setDatabaseHistoryKafkaBootstrapServers(
+            String databaseHistoryKafkaBootstrapServers) {
+        this.databaseHistoryKafkaBootstrapServers = databaseHistoryKafkaBootstrapServers;
+    }
+
+    public String getDatabaseHistoryKafkaBootstrapServers() {
+        return databaseHistoryKafkaBootstrapServers;
+    }
+
+    /**
+     * Time, date, and timestamps can be represented with different kinds of
+     * precisions, including:'adaptive' (the default) bases the precision of
+     * time, date, and timestamp values on the database column's precision;
+     * 'adaptive_time_microseconds' like 'adaptive' mode, but TIME fields always
+     * use microseconds precision;'connect' always represents time, date, and
+     * timestamp values using Kafka Connect's built-in representations for Time,
+     * Date, and Timestamp, which uses millisecond precision regardless of the
+     * database columns' precision .
+     */
+    public void setTimePrecisionMode(String timePrecisionMode) {
+        this.timePrecisionMode = timePrecisionMode;
+    }
+
+    public String getTimePrecisionMode() {
+        return timePrecisionMode;
+    }
+
+    /**
+     * Unique name that identifies the database server and all recorded offsets,
+     * and that is used as a prefix for all schemas and topics. Each distinct
+     * installation should have a separate namespace and be monitored by at most
+     * one Debezium connector.
+     */
+    public void setDatabaseServerName(String databaseServerName) {
+        this.databaseServerName = databaseServerName;
+    }
+
+    public String getDatabaseServerName() {
+        return databaseServerName;
+    }
+
+    /**
+     * Length of an interval in milli-seconds in in which the connector
+     * periodically sends heartbeat messages to a heartbeat topic. Use 0 to
+     * disable heartbeat messages. Disabled by default.
+     */
+    public void setHeartbeatIntervalMs(int heartbeatIntervalMs) {
+        this.heartbeatIntervalMs = heartbeatIntervalMs;
+    }
+
+    public int getHeartbeatIntervalMs() {
+        return heartbeatIntervalMs;
+    }
+
+    /**
+     * A version of the format of the publicly visible source part in the
+     * message
+     */
+    public void setSourceStructVersion(String sourceStructVersion) {
+        this.sourceStructVersion = sourceStructVersion;
+    }
+
+    public String getSourceStructVersion() {
+        return sourceStructVersion;
+    }
+
+    /**
+     * Specify how failures during processing of events (i.e. when encountering
+     * a corrupted event) should be handled, including:'fail' (the default) an
+     * exception indicating the problematic event and its position is raised,
+     * causing the connector to be stopped; 'warn' the problematic event and its
+     * position will be logged and the event will be skipped;'ignore' the
+     * problematic event will be skipped.
+     */
+    public void setEventProcessingFailureHandlingMode(
+            String eventProcessingFailureHandlingMode) {
+        this.eventProcessingFailureHandlingMode = eventProcessingFailureHandlingMode;
+    }
+
+    public String getEventProcessingFailureHandlingMode() {
+        return eventProcessingFailureHandlingMode;
+    }
+
+    /**
+     * Port of the database server.
+     */
+    public void setDatabasePort(int databasePort) {
+        this.databasePort = databasePort;
+    }
+
+    public int getDatabasePort() {
+        return databasePort;
+    }
+
+    /**
+     * Regular expressions matching columns to exclude from change events
+     */
+    public void setColumnExcludeList(String columnExcludeList) {
+        this.columnExcludeList = columnExcludeList;
+    }
+
+    public String getColumnExcludeList() {
+        return columnExcludeList;
+    }
+
+    /**
+     * A comma-separated list of regular expressions that match the
+     * fully-qualified names of tables to be excluded from monitoring
+     */
+    public void setTableExcludeList(String tableExcludeList) {
+        this.tableExcludeList = tableExcludeList;
+    }
+
+    public String getTableExcludeList() {
+        return tableExcludeList;
+    }
+
+    /**
+     * Resolvable hostname or IP address of the database server.
+     */
+    public void setDatabaseHostname(String databaseHostname) {
+        this.databaseHostname = databaseHostname;
+    }
+
+    public String getDatabaseHostname() {
+        return databaseHostname;
+    }
+
+    /**
+     * Password of the database user to be used when connecting to the database.
+     */
+    public void setDatabasePassword(String databasePassword) {
+        this.databasePassword = databasePassword;
+    }
+
+    public String getDatabasePassword() {
+        return databasePassword;
+    }
+
+    /**
+     * The tables for which changes are to be captured
+     */
+    public void setTableIncludeList(String tableIncludeList) {
+        this.tableIncludeList = tableIncludeList;
+    }
+
+    public String getTableIncludeList() {
+        return tableIncludeList;
+    }
+
+    /**
+     * Maximum size of each batch of source records. Defaults to 2048.
+     */
+    public void setMaxBatchSize(int maxBatchSize) {
+        this.maxBatchSize = maxBatchSize;
+    }
+
+    public int getMaxBatchSize() {
+        return maxBatchSize;
+    }
+
+    /**
+     * The criteria for running a snapshot upon startup of the connector.
+     * Options include: 'initial' (the default) to specify the connector should
+     * run a snapshot only when no offsets are available for the logical server
+     * name; 'schema_only' to specify the connector should run a snapshot of the
+     * schema when no offsets are available for the logical server name. 
+     */
+    public void setSnapshotMode(String snapshotMode) {
+        this.snapshotMode = snapshotMode;
+    }
+
+    public String getSnapshotMode() {
+        return snapshotMode;
+    }
+
+    /**
+     * The name of the DatabaseHistory class that should be used to store and
+     * recover database schema changes. The configuration properties for the
+     * history are prefixed with the 'database.history.' string.
+     */
+    public void setDatabaseHistory(String databaseHistory) {
+        this.databaseHistory = databaseHistory;
+    }
+
+    public String getDatabaseHistory() {
+        return databaseHistory;
+    }
+
+    @Override
+    protected Configuration createConnectorConfiguration() {
+        final Configuration.Builder configBuilder = Configuration.create();
+        
+        addPropertyIfNotNull(configBuilder, "max.queue.size", maxQueueSize);
+        addPropertyIfNotNull(configBuilder, "database.history.kafka.topic", databaseHistoryKafkaTopic);
+        addPropertyIfNotNull(configBuilder, "column.blacklist", columnBlacklist);
+        addPropertyIfNotNull(configBuilder, "snapshot.delay.ms", snapshotDelayMs);
+        addPropertyIfNotNull(configBuilder, "database.history.kafka.recovery.attempts", databaseHistoryKafkaRecoveryAttempts);
+        addPropertyIfNotNull(configBuilder, "table.blacklist", tableBlacklist);
+        addPropertyIfNotNull(configBuilder, "table.whitelist", tableWhitelist);
+        addPropertyIfNotNull(configBuilder, "decimal.handling.mode", decimalHandlingMode);
+        addPropertyIfNotNull(configBuilder, "database.history.kafka.recovery.poll.interval.ms", databaseHistoryKafkaRecoveryPollIntervalMs);
+        addPropertyIfNotNull(configBuilder, "poll.interval.ms", pollIntervalMs);
+        addPropertyIfNotNull(configBuilder, "heartbeat.topics.prefix", heartbeatTopicsPrefix);
+        addPropertyIfNotNull(configBuilder, "table.ignore.builtin", tableIgnoreBuiltin);
+        addPropertyIfNotNull(configBuilder, "snapshot.fetch.size", snapshotFetchSize);
+        addPropertyIfNotNull(configBuilder, "database.history.file.filename", databaseHistoryFileFilename);
+        addPropertyIfNotNull(configBuilder, "database.user", databaseUser);
+        addPropertyIfNotNull(configBuilder, "database.dbname", databaseDbname);
+        addPropertyIfNotNull(configBuilder, "snapshot.select.statement.overrides", snapshotSelectStatementOverrides);
+        addPropertyIfNotNull(configBuilder, "database.history.kafka.bootstrap.servers", databaseHistoryKafkaBootstrapServers);
+        addPropertyIfNotNull(configBuilder, "time.precision.mode", timePrecisionMode);
+        addPropertyIfNotNull(configBuilder, "database.server.name", databaseServerName);
+        addPropertyIfNotNull(configBuilder, "heartbeat.interval.ms", heartbeatIntervalMs);
+        addPropertyIfNotNull(configBuilder, "source.struct.version", sourceStructVersion);
+        addPropertyIfNotNull(configBuilder, "event.processing.failure.handling.mode", eventProcessingFailureHandlingMode);
+        addPropertyIfNotNull(configBuilder, "database.port", databasePort);
+        addPropertyIfNotNull(configBuilder, "column.exclude.list", columnExcludeList);
+        addPropertyIfNotNull(configBuilder, "table.exclude.list", tableExcludeList);
+        addPropertyIfNotNull(configBuilder, "database.hostname", databaseHostname);
+        addPropertyIfNotNull(configBuilder, "database.password", databasePassword);
+        addPropertyIfNotNull(configBuilder, "table.include.list", tableIncludeList);
+        addPropertyIfNotNull(configBuilder, "max.batch.size", maxBatchSize);
+        addPropertyIfNotNull(configBuilder, "snapshot.mode", snapshotMode);
+        addPropertyIfNotNull(configBuilder, "database.history", databaseHistory);
+        
+        return configBuilder.build();
+    }
+
+    @Override
+    protected Class configureConnectorClass() {
+        return Db2Connector.class;
+    }
+
+    @Override
+    protected ConfigurationValidation validateConnectorConfiguration() {
+        if (isFieldValueNotSet(databaseServerName)) {
+        	return ConfigurationValidation.notValid("Required field 'databaseServerName' must be set.");
+        }
+        if (isFieldValueNotSet(databasePassword)) {
+        	return ConfigurationValidation.notValid("Required field 'databasePassword' must be set.");
+        }
+        return ConfigurationValidation.valid();
+    }
+
+    @Override
+    public String getConnectorDatabaseType() {
+        return "db2";
+    }
+}
\ No newline at end of file
diff --git a/components/camel-debezium/camel-debezium-db2/src/generated/resources/META-INF/services/org/apache/camel/component.properties b/components/camel-debezium/camel-debezium-db2/src/generated/resources/META-INF/services/org/apache/camel/component.properties
new file mode 100644
index 00000000000..74e76b7c824
--- /dev/null
+++ b/components/camel-debezium/camel-debezium-db2/src/generated/resources/META-INF/services/org/apache/camel/component.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+components=debezium-db2
+groupId=org.apache.camel
+artifactId=camel-debezium-db2
+version=3.17.0-SNAPSHOT
+projectName=Camel :: Debezium :: DB2
+projectDescription=Camel Debezium DB2 support
diff --git a/components/camel-debezium/camel-debezium-db2/src/generated/resources/META-INF/services/org/apache/camel/component/debezium-db2 b/components/camel-debezium/camel-debezium-db2/src/generated/resources/META-INF/services/org/apache/camel/component/debezium-db2
new file mode 100644
index 00000000000..8ef5648ad97
--- /dev/null
+++ b/components/camel-debezium/camel-debezium-db2/src/generated/resources/META-INF/services/org/apache/camel/component/debezium-db2
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.debezium.DebeziumDb2Component
diff --git a/components/camel-debezium/camel-debezium-db2/src/generated/resources/META-INF/services/org/apache/camel/configurer/debezium-db2-component b/components/camel-debezium/camel-debezium-db2/src/generated/resources/META-INF/services/org/apache/camel/configurer/debezium-db2-component
new file mode 100644
index 00000000000..673d4bfd8a8
--- /dev/null
+++ b/components/camel-debezium/camel-debezium-db2/src/generated/resources/META-INF/services/org/apache/camel/configurer/debezium-db2-component
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.debezium.DebeziumDb2ComponentConfigurer
diff --git a/components/camel-debezium/camel-debezium-db2/src/generated/resources/META-INF/services/org/apache/camel/configurer/debezium-db2-endpoint b/components/camel-debezium/camel-debezium-db2/src/generated/resources/META-INF/services/org/apache/camel/configurer/debezium-db2-endpoint
new file mode 100644
index 00000000000..26e4434b3c3
--- /dev/null
+++ b/components/camel-debezium/camel-debezium-db2/src/generated/resources/META-INF/services/org/apache/camel/configurer/debezium-db2-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.debezium.DebeziumDb2EndpointConfigurer
diff --git a/components/camel-debezium/camel-debezium-db2/src/generated/resources/META-INF/services/org/apache/camel/urifactory/debezium-db2-endpoint b/components/camel-debezium/camel-debezium-db2/src/generated/resources/META-INF/services/org/apache/camel/urifactory/debezium-db2-endpoint
new file mode 100644
index 00000000000..2344dccbea9
--- /dev/null
+++ b/components/camel-debezium/camel-debezium-db2/src/generated/resources/META-INF/services/org/apache/camel/urifactory/debezium-db2-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.debezium.DebeziumDb2EndpointUriFactory
diff --git a/components/camel-debezium/camel-debezium-db2/src/generated/resources/org/apache/camel/component/debezium/debezium-db2.json b/components/camel-debezium/camel-debezium-db2/src/generated/resources/org/apache/camel/component/debezium/debezium-db2.json
new file mode 100644
index 00000000000..de069fc10ad
--- /dev/null
+++ b/components/camel-debezium/camel-debezium-db2/src/generated/resources/org/apache/camel/component/debezium/debezium-db2.json
@@ -0,0 +1,130 @@
+{
+  "component": {
+    "kind": "component",
+    "name": "debezium-db2",
+    "title": "Debezium DB2 Connector",
+    "description": "Capture changes from a Oracle database.",
+    "deprecated": false,
+    "firstVersion": "3.17.0",
+    "label": "database,sql",
+    "javaType": "org.apache.camel.component.debezium.DebeziumDb2Component",
+    "supportLevel": "Preview",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-debezium-db2",
+    "version": "3.17.0-SNAPSHOT",
+    "scheme": "debezium-db2",
+    "extendsScheme": "",
+    "syntax": "debezium-db2:name",
+    "async": false,
+    "api": false,
+    "consumerOnly": true,
+    "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.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configura [...]
+    "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 me [...]
+    "configuration": { "kind": "property", "displayName": "Configuration", "group": "consumer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "Allow pre-configured Configurations to be set." },
+    "internalKeyConverter": { "kind": "property", "displayName": "Internal Key Converter", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "org.apache.kafka.connect.json.JsonConverter", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description" [...]
+    "internalValueConverter": { "kind": "property", "displayName": "Internal Value Converter", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "org.apache.kafka.connect.json.JsonConverter", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "descript [...]
+    "offsetCommitPolicy": { "kind": "property", "displayName": "Offset Commit Policy", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "io.debezium.embedded.spi.OffsetCommitPolicy.PeriodicCommitOffsetPolicy", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "config [...]
+    "offsetCommitTimeoutMs": { "kind": "property", "displayName": "Offset Commit Timeout Ms", "group": "consumer", "label": "consumer", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5000", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Maximum number of milliseconds to wait for  [...]
+    "offsetFlushIntervalMs": { "kind": "property", "displayName": "Offset Flush Interval Ms", "group": "consumer", "label": "consumer", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "60000", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Interval at which to try committing offset [...]
+    "offsetStorage": { "kind": "property", "displayName": "Offset Storage", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "org.apache.kafka.connect.storage.FileOffsetBackingStore", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": " [...]
+    "offsetStorageFileName": { "kind": "property", "displayName": "Offset Storage File Name", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Path to file where offsets are to be stored. Required whe [...]
+    "offsetStoragePartitions": { "kind": "property", "displayName": "Offset Storage Partitions", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The number of partitions used when creating the offset storage top [...]
+    "offsetStorageReplicationFactor": { "kind": "property", "displayName": "Offset Storage Replication Factor", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Replication factor used when creating the offset st [...]
+    "offsetStorageTopic": { "kind": "property", "displayName": "Offset Storage Topic", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The name of the Kafka topic where offsets are to be stored. Requ [...]
+    "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 t [...]
+    "columnBlacklist": { "kind": "property", "displayName": "Column Blacklist", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Regular expressions matching columns to exclude from change events (depr [...]
+    "columnExcludeList": { "kind": "property", "displayName": "Column Exclude List", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Regular expressions matching columns to exclude from change events" },
+    "databaseDbname": { "kind": "property", "displayName": "Database Dbname", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The name of the database from which the connector should capture changes" },
+    "databaseHistory": { "kind": "property", "displayName": "Database History", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "class io.debezium.relational.history.KafkaDatabaseHistory", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "descriptio [...]
+    "databaseHistoryFileFilename": { "kind": "property", "displayName": "Database History File Filename", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The path to the file that will be used to reco [...]
+    "databaseHistoryKafkaBootstrapServers": { "kind": "property", "displayName": "Database History Kafka Bootstrap Servers", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "A list of host\/port pairs  [...]
+    "databaseHistoryKafkaRecoveryAttempts": { "kind": "property", "displayName": "Database History Kafka Recovery Attempts", "group": "db2", "label": "consumer,db2", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 100, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The number of atte [...]
+    "databaseHistoryKafkaRecoveryPollIntervalMs": { "kind": "property", "displayName": "Database History Kafka Recovery Poll Interval Ms", "group": "db2", "label": "consumer,db2", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "100ms", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description":  [...]
+    "databaseHistoryKafkaTopic": { "kind": "property", "displayName": "Database History Kafka Topic", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The name of the topic for the database schema history" },
+    "databaseHostname": { "kind": "property", "displayName": "Database Hostname", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Resolvable hostname or IP address of the database server." },
+    "databasePassword": { "kind": "property", "displayName": "Database Password", "group": "db2", "label": "consumer,db2", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Password of the database user to be used when co [...]
+    "databasePort": { "kind": "property", "displayName": "Database Port", "group": "db2", "label": "consumer,db2", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 50000, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Port of the database server." },
+    "databaseServerName": { "kind": "property", "displayName": "Database Server Name", "group": "db2", "label": "consumer,db2", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Unique name that identifies the database se [...]
+    "databaseUser": { "kind": "property", "displayName": "Database User", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Name of the database user to be used when connecting to the database." },
+    "decimalHandlingMode": { "kind": "property", "displayName": "Decimal Handling Mode", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "precise", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Specify how DECIMAL and NUMERIC colu [...]
+    "eventProcessingFailureHandlingMode": { "kind": "property", "displayName": "Event Processing Failure Handling Mode", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "fail", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Specify [...]
+    "heartbeatIntervalMs": { "kind": "property", "displayName": "Heartbeat Interval Ms", "group": "db2", "label": "consumer,db2", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "0ms", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Length of an interval in milli-seconds in in which  [...]
+    "heartbeatTopicsPrefix": { "kind": "property", "displayName": "Heartbeat Topics Prefix", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "__debezium-heartbeat", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The prefix that is  [...]
+    "maxBatchSize": { "kind": "property", "displayName": "Max Batch Size", "group": "db2", "label": "consumer,db2", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 2048, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Maximum size of each batch of source records. Defaults to 2048." },
+    "maxQueueSize": { "kind": "property", "displayName": "Max Queue Size", "group": "db2", "label": "consumer,db2", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 8192, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Maximum size of the queue for change events read from the database  [...]
+    "pollIntervalMs": { "kind": "property", "displayName": "Poll Interval Ms", "group": "db2", "label": "consumer,db2", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "500ms", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Time to wait for new change events to appear after receivi [...]
+    "snapshotDelayMs": { "kind": "property", "displayName": "Snapshot Delay Ms", "group": "db2", "label": "consumer,db2", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "0ms", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "A delay period before a snapshot will begin, given in mill [...]
+    "snapshotFetchSize": { "kind": "property", "displayName": "Snapshot Fetch Size", "group": "db2", "label": "consumer,db2", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The maximum number of records that should be loaded into memory while performin [...]
+    "snapshotMode": { "kind": "property", "displayName": "Snapshot Mode", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "initial", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The criteria for running a snapshot upon startup of [...]
+    "snapshotSelectStatementOverrides": { "kind": "property", "displayName": "Snapshot Select Statement Overrides", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "This property contains a comma-separ [...]
+    "sourceStructVersion": { "kind": "property", "displayName": "Source Struct Version", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "v2", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "A version of the format of the publicly v [...]
+    "tableBlacklist": { "kind": "property", "displayName": "Table Blacklist", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "A comma-separated list of regular expressions that match the fully-qualifi [...]
+    "tableExcludeList": { "kind": "property", "displayName": "Table Exclude List", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "A comma-separated list of regular expressions that match the fully-qu [...]
+    "tableIgnoreBuiltin": { "kind": "property", "displayName": "Table Ignore Builtin", "group": "db2", "label": "consumer,db2", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Flag specifying whether built-in tables should be i [...]
+    "tableIncludeList": { "kind": "property", "displayName": "Table Include List", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The tables for which changes are to be captured" },
+    "tableWhitelist": { "kind": "property", "displayName": "Table Whitelist", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The tables for which changes are to be captured (deprecated, use table.inc [...]
+    "timePrecisionMode": { "kind": "property", "displayName": "Time Precision Mode", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "adaptive", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Time, date, and timestamps can be repre [...]
+  },
+  "headers": {
+    "CamelDebeziumSourceMetadata": { "kind": "header", "displayName": "", "group": "consumer", "label": "", "required": false, "javaType": "Map<String, Object>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The metadata about the source event, for example table name, database name, log position, etc, please refer to the Debezium documentation for more info." },
+    "CamelDebeziumIdentifier": { "kind": "header", "displayName": "", "group": "consumer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The identifier of the connector, normally is this format {server-name}.{database-name}.{table-name}." },
+    "CamelDebeziumKey": { "kind": "header", "displayName": "", "group": "consumer", "label": "", "required": false, "javaType": "Struct", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The key of the event, normally is the table Primary Key." },
+    "CamelDebeziumOperation": { "kind": "header", "displayName": "", "group": "consumer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "If presents, the type of event operation. Values for the connector are c for create (or insert), u for update, d for delete or r for read (in the case of a initial sync) or in case of a snapshot event." },
+    "CamelDebeziumTimestamp": { "kind": "header", "displayName": "", "group": "consumer", "label": "", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "If presents, the time (using the system clock in the JVM) at which the connector processed the event." },
+    "CamelDebeziumBefore": { "kind": "header", "displayName": "", "group": "consumer", "label": "", "required": false, "javaType": "Struct", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "If presents, contains the state of the row before the event occurred." },
+    "CamelDebeziumDdlSQL": { "kind": "header", "displayName": "", "group": "consumer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "If presents, the ddl sql text of the event." }
+  },
+  "properties": {
+    "name": { "kind": "path", "displayName": "Name", "group": "consumer", "label": "consumer", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Unique name for the connector. Attempting to register again with the same na [...]
+    "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.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configur [...]
+    "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 m [...]
+    "internalKeyConverter": { "kind": "parameter", "displayName": "Internal Key Converter", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "org.apache.kafka.connect.json.JsonConverter", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description [...]
+    "internalValueConverter": { "kind": "parameter", "displayName": "Internal Value Converter", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "org.apache.kafka.connect.json.JsonConverter", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "descrip [...]
+    "offsetCommitPolicy": { "kind": "parameter", "displayName": "Offset Commit Policy", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "io.debezium.embedded.spi.OffsetCommitPolicy.PeriodicCommitOffsetPolicy", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "confi [...]
+    "offsetCommitTimeoutMs": { "kind": "parameter", "displayName": "Offset Commit Timeout Ms", "group": "consumer", "label": "consumer", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5000", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Maximum number of milliseconds to wait for [...]
+    "offsetFlushIntervalMs": { "kind": "parameter", "displayName": "Offset Flush Interval Ms", "group": "consumer", "label": "consumer", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "60000", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Interval at which to try committing offse [...]
+    "offsetStorage": { "kind": "parameter", "displayName": "Offset Storage", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "org.apache.kafka.connect.storage.FileOffsetBackingStore", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description":  [...]
+    "offsetStorageFileName": { "kind": "parameter", "displayName": "Offset Storage File Name", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Path to file where offsets are to be stored. Required wh [...]
+    "offsetStoragePartitions": { "kind": "parameter", "displayName": "Offset Storage Partitions", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The number of partitions used when creating the offset storage to [...]
+    "offsetStorageReplicationFactor": { "kind": "parameter", "displayName": "Offset Storage Replication Factor", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Replication factor used when creating the offset s [...]
+    "offsetStorageTopic": { "kind": "parameter", "displayName": "Offset Storage Topic", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The name of the Kafka topic where offsets are to be stored. Req [...]
+    "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 con [...]
+    "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." },
+    "columnBlacklist": { "kind": "parameter", "displayName": "Column Blacklist", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Regular expressions matching columns to exclude from change events (dep [...]
+    "columnExcludeList": { "kind": "parameter", "displayName": "Column Exclude List", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Regular expressions matching columns to exclude from change events" },
+    "databaseDbname": { "kind": "parameter", "displayName": "Database Dbname", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The name of the database from which the connector should capture changes" },
+    "databaseHistory": { "kind": "parameter", "displayName": "Database History", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "class io.debezium.relational.history.KafkaDatabaseHistory", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "descripti [...]
+    "databaseHistoryFileFilename": { "kind": "parameter", "displayName": "Database History File Filename", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The path to the file that will be used to rec [...]
+    "databaseHistoryKafkaBootstrapServers": { "kind": "parameter", "displayName": "Database History Kafka Bootstrap Servers", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "A list of host\/port pairs [...]
+    "databaseHistoryKafkaRecoveryAttempts": { "kind": "parameter", "displayName": "Database History Kafka Recovery Attempts", "group": "db2", "label": "consumer,db2", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 100, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The number of att [...]
+    "databaseHistoryKafkaRecoveryPollIntervalMs": { "kind": "parameter", "displayName": "Database History Kafka Recovery Poll Interval Ms", "group": "db2", "label": "consumer,db2", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "100ms", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": [...]
+    "databaseHistoryKafkaTopic": { "kind": "parameter", "displayName": "Database History Kafka Topic", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The name of the topic for the database schema his [...]
+    "databaseHostname": { "kind": "parameter", "displayName": "Database Hostname", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Resolvable hostname or IP address of the database server." },
+    "databasePassword": { "kind": "parameter", "displayName": "Database Password", "group": "db2", "label": "consumer,db2", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Password of the database user to be used when c [...]
+    "databasePort": { "kind": "parameter", "displayName": "Database Port", "group": "db2", "label": "consumer,db2", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 50000, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Port of the database server." },
+    "databaseServerName": { "kind": "parameter", "displayName": "Database Server Name", "group": "db2", "label": "consumer,db2", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Unique name that identifies the database s [...]
+    "databaseUser": { "kind": "parameter", "displayName": "Database User", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Name of the database user to be used when connecting to the database." },
+    "decimalHandlingMode": { "kind": "parameter", "displayName": "Decimal Handling Mode", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "precise", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Specify how DECIMAL and NUMERIC col [...]
+    "eventProcessingFailureHandlingMode": { "kind": "parameter", "displayName": "Event Processing Failure Handling Mode", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "fail", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Specif [...]
+    "heartbeatIntervalMs": { "kind": "parameter", "displayName": "Heartbeat Interval Ms", "group": "db2", "label": "consumer,db2", "required": false, "type": "duration", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "0ms", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Length of an interval in milli-seconds in in which [...]
+    "heartbeatTopicsPrefix": { "kind": "parameter", "displayName": "Heartbeat Topics Prefix", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "__debezium-heartbeat", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The prefix that is [...]
+    "maxBatchSize": { "kind": "parameter", "displayName": "Max Batch Size", "group": "db2", "label": "consumer,db2", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 2048, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Maximum size of each batch of source records. Defaults to 2048." },
+    "maxQueueSize": { "kind": "parameter", "displayName": "Max Queue Size", "group": "db2", "label": "consumer,db2", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 8192, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Maximum size of the queue for change events read from the database [...]
+    "pollIntervalMs": { "kind": "parameter", "displayName": "Poll Interval Ms", "group": "db2", "label": "consumer,db2", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "500ms", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Time to wait for new change events to appear after receiv [...]
+    "snapshotDelayMs": { "kind": "parameter", "displayName": "Snapshot Delay Ms", "group": "db2", "label": "consumer,db2", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "0ms", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "A delay period before a snapshot will begin, given in mil [...]
+    "snapshotFetchSize": { "kind": "parameter", "displayName": "Snapshot Fetch Size", "group": "db2", "label": "consumer,db2", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The maximum number of records that should be loaded into memory while performi [...]
+    "snapshotMode": { "kind": "parameter", "displayName": "Snapshot Mode", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "initial", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The criteria for running a snapshot upon startup o [...]
+    "snapshotSelectStatementOverrides": { "kind": "parameter", "displayName": "Snapshot Select Statement Overrides", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "This property contains a comma-sepa [...]
+    "sourceStructVersion": { "kind": "parameter", "displayName": "Source Struct Version", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "v2", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "A version of the format of the publicly  [...]
+    "tableBlacklist": { "kind": "parameter", "displayName": "Table Blacklist", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "A comma-separated list of regular expressions that match the fully-qualif [...]
+    "tableExcludeList": { "kind": "parameter", "displayName": "Table Exclude List", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "A comma-separated list of regular expressions that match the fully-q [...]
+    "tableIgnoreBuiltin": { "kind": "parameter", "displayName": "Table Ignore Builtin", "group": "db2", "label": "consumer,db2", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Flag specifying whether built-in tables should be  [...]
+    "tableIncludeList": { "kind": "parameter", "displayName": "Table Include List", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The tables for which changes are to be captured" },
+    "tableWhitelist": { "kind": "parameter", "displayName": "Table Whitelist", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "The tables for which changes are to be captured (deprecated, use table.in [...]
+    "timePrecisionMode": { "kind": "parameter", "displayName": "Time Precision Mode", "group": "db2", "label": "consumer,db2", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "adaptive", "configurationClass": "org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration", "configurationField": "configuration", "description": "Time, date, and timestamps can be repr [...]
+  }
+}
diff --git a/components/camel-debezium/camel-debezium-db2/src/main/docs/debezium-db2-component.adoc b/components/camel-debezium/camel-debezium-db2/src/main/docs/debezium-db2-component.adoc
new file mode 100644
index 00000000000..deb8f24532b
--- /dev/null
+++ b/components/camel-debezium/camel-debezium-db2/src/main/docs/debezium-db2-component.adoc
@@ -0,0 +1,113 @@
+= Debezium DB2 Connector Component
+:doctitle: Debezium DB2 Connector
+:shortname: debezium-db2
+:artifactid: camel-debezium-db2
+:description: Capture changes from a Oracle database.
+:since: 3.17
+:supportlevel: Preview
+:component-header: Only consumer is supported
+//Manually maintained attributes
+:group: Debezium
+:camel-spring-boot-name: debezium-db2
+
+*Since Camel {since}*
+
+*{component-header}*
+
+
+The Debezium db2 component is wrapper around https://debezium.io/[Debezium] using https://debezium.io/documentation/reference/1.8/operations/embedded.html[Debezium Embedded], which enables Change Data Capture from db2 database using Debezium without the need for Kafka or Kafka Connect.
+
+*Note on handling failures:* Per https://debezium.io/documentation/reference/0.9/operations/embedded.html#_handling_failures[Debezium Embedded Engine] documentation, the engines is actively recording source offsets and periodically flushes these offsets to a persistent storage, so when the application is restarted or crashed, the engine will resume from the last recorded offset.
+Thus, at normal operation, your downstream routes will receive each event exactly once, however in case of an application crash (not having a graceful shutdown), the application will resume from the last recorded offset,
+which may result in receiving duplicate events immediately after the restart. Therefore, your downstream routes should be tolerant enough of such case and deduplicate events if needed.
+
+*Note:* The Debezium db2 component is currently not supported in OSGi
+
+Maven users will need to add the following dependency to their `pom.xml`
+for this component.
+
+[source,xml]
+----
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-debezium-db2</artifactId>
+    <version>x.x.x</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+----
+
+== URI format
+
+---------------------------
+debezium-db2:name[?options]
+---------------------------
+
+
+// component-configure options: START
+
+// component-configure options: END
+
+// component options: START
+include::partial$component-configure-options.adoc[]
+include::partial$component-endpoint-options.adoc[]
+// component options: END
+
+// endpoint options: START
+
+// endpoint options: END
+
+For more information about configuration:
+https://debezium.io/documentation/reference/1.18/operations/embedded.html#engine-properties[https://debezium.io/documentation/reference/1.8/operations/embedded.html#engine-properties]
+https://debezium.io/documentation/reference/1.18/connectors/db2ql.html#connector-properties[https://debezium.io/documentation/reference/1.8/connectors/db2.html#connector-properties]
+
+// component headers: START
+include::partial$component-endpoint-headers.adoc[]
+// component headers: END
+
+== Message body
+The message body if is not `null` (in case of tombstones), it contains the state of the row after the event occurred as `Struct` format or `Map` format if you use the included Type Converter from `Struct` to `Map` (please look below for more explanation).
+
+== Samples
+
+=== Consuming events
+
+Here is a very simple route that you can use in order to listen to Debezium events from db2 connector.
+
+[source,java]
+----
+from("debezium-db2:dbz-test-1?offsetStorageFileName=/usr/offset-file-1.dat&databaseHostname=localhost&databaseUser=debezium&databasePassword=dbz&databaseServerName=my-app-connector&databaseHistoryFileFilename=/usr/history-file-1.dat")
+    .log("Event received from Debezium : ${body}")
+    .log("    with this identifier ${headers.CamelDebeziumIdentifier}")
+    .log("    with these source metadata ${headers.CamelDebeziumSourceMetadata}")
+    .log("    the event occured upon this operation '${headers.CamelDebeziumSourceOperation}'")
+    .log("    on this database '${headers.CamelDebeziumSourceMetadata[db]}' and this table '${headers.CamelDebeziumSourceMetadata[table]}'")
+    .log("    with the key ${headers.CamelDebeziumKey}")
+    .log("    the previous value is ${headers.CamelDebeziumBefore}")
+----
+
+By default, the component will emit the events in the body and `CamelDebeziumBefore` header as https://kafka.apache.org/22/javadoc/org/apache/kafka/connect/data/Struct.html[`Struct`] data type, the reasoning behind this, is to perceive the schema information in case is needed.
+However, the component as well contains a xref:manual::type-converter.adoc[Type Converter] that converts
+from default output type of https://kafka.apache.org/22/javadoc/org/apache/kafka/connect/data/Struct.html[`Struct`] to `Map` in order to leverage Camel's rich xref:manual::data-format.adoc[Data Format] types which many of them work out of box with `Map` data type.
+To use it, you can either add `Map.class` type when you access the message e.g: `exchange.getIn().getBody(Map.class)`, or you can convert the body always to `Map` from the route builder by adding `.convertBodyTo(Map.class)` to your Camel Route DSL after `from` statement.
+
+We mentioned above about the schema, which can be used in case you need to perform advance data transformation and the schema is needed for that. If you choose not to convert your body to `Map`,
+you can obtain the schema information as https://kafka.apache.org/22/javadoc/org/apache/kafka/connect/data/Schema.html[`Schema`] type from `Struct` like this:
+
+[source,java]
+----
+from("debezium-db2:[name]?[options]])
+    .process(exchange -> {
+        final Struct bodyValue = exchange.getIn().getBody(Struct.class);
+        final Schema schemaValue = bodyValue.schema();
+
+        log.info("Body value is :" + bodyValue);
+        log.info("With Schema : " + schemaValue);
+        log.info("And fields of :" + schemaValue.fields());
+        log.info("Field name has `" + schemaValue.field("name").schema() + "` type");
+    });
+----
+
+*Important Note:* This component is a thin wrapper around Debezium Engine as mentioned, therefore before using this component in production, you need to understand how Debezium works and how configurations can reflect the expected behavior, especially in regards to https://debezium.io/documentation/reference/1.8/operations/embedded.html#_handling_failures[handling failures].
+
+
+include::spring-boot:partial$starter.adoc[]
diff --git a/components/camel-debezium/camel-debezium-db2/src/main/java/org/apache/camel/component/debezium/DebeziumDb2Component.java b/components/camel-debezium/camel-debezium-db2/src/main/java/org/apache/camel/component/debezium/DebeziumDb2Component.java
new file mode 100644
index 00000000000..e37384a032a
--- /dev/null
+++ b/components/camel-debezium/camel-debezium-db2/src/main/java/org/apache/camel/component/debezium/DebeziumDb2Component.java
@@ -0,0 +1,56 @@
+/*
+ * 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.debezium;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration;
+import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
+
+@Component("debezium-db2")
+public final class DebeziumDb2Component extends DebeziumComponent<Db2ConnectorEmbeddedDebeziumConfiguration> {
+
+    @Metadata
+    private Db2ConnectorEmbeddedDebeziumConfiguration configuration = new Db2ConnectorEmbeddedDebeziumConfiguration();
+
+    public DebeziumDb2Component() {
+    }
+
+    public DebeziumDb2Component(final CamelContext context) {
+        super(context);
+    }
+
+    /**
+     * Allow pre-configured Configurations to be set.
+     */
+    @Override
+    public Db2ConnectorEmbeddedDebeziumConfiguration getConfiguration() {
+        return configuration;
+    }
+
+    @Override
+    public void setConfiguration(Db2ConnectorEmbeddedDebeziumConfiguration configuration) {
+        this.configuration = configuration;
+    }
+
+    @Override
+    protected DebeziumEndpoint initializeDebeziumEndpoint(
+            String uri, Db2ConnectorEmbeddedDebeziumConfiguration configuration) {
+        return new DebeziumDb2Endpoint(uri, this, configuration);
+    }
+}
diff --git a/components/camel-debezium/camel-debezium-db2/src/main/java/org/apache/camel/component/debezium/DebeziumDb2Endpoint.java b/components/camel-debezium/camel-debezium-db2/src/main/java/org/apache/camel/component/debezium/DebeziumDb2Endpoint.java
new file mode 100644
index 00000000000..2e7e4ad305c
--- /dev/null
+++ b/components/camel-debezium/camel-debezium-db2/src/main/java/org/apache/camel/component/debezium/DebeziumDb2Endpoint.java
@@ -0,0 +1,54 @@
+/*
+ * 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.debezium;
+
+import org.apache.camel.Category;
+import org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration;
+import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.spi.UriParam;
+
+/**
+ * Capture changes from a Oracle database.
+ */
+@UriEndpoint(firstVersion = "3.17.0", scheme = "debezium-db2", title = "Debezium DB2 Connector",
+             syntax = "debezium-db2:name", category = { Category.DATABASE, Category.SQL }, consumerOnly = true,
+             headersClass = DebeziumConstants.class)
+public final class DebeziumDb2Endpoint extends DebeziumEndpoint<Db2ConnectorEmbeddedDebeziumConfiguration> {
+
+    @UriParam
+    private Db2ConnectorEmbeddedDebeziumConfiguration configuration;
+
+    public DebeziumDb2Endpoint(final String uri, final DebeziumDb2Component component,
+                               final Db2ConnectorEmbeddedDebeziumConfiguration configuration) {
+        super(uri, component);
+        this.configuration = configuration;
+    }
+
+    public DebeziumDb2Endpoint() {
+    }
+
+    @Override
+    public Db2ConnectorEmbeddedDebeziumConfiguration getConfiguration() {
+        return configuration;
+    }
+
+    @Override
+    public void setConfiguration(final Db2ConnectorEmbeddedDebeziumConfiguration configuration) {
+        this.configuration = configuration;
+    }
+}
diff --git a/components/camel-debezium/camel-debezium-db2/src/test/java/org/apache/camel/component/debezium/DebeziumDb2ComponentTest.java b/components/camel-debezium/camel-debezium-db2/src/test/java/org/apache/camel/component/debezium/DebeziumDb2ComponentTest.java
new file mode 100644
index 00000000000..7b61353e468
--- /dev/null
+++ b/components/camel-debezium/camel-debezium-db2/src/test/java/org/apache/camel/component/debezium/DebeziumDb2ComponentTest.java
@@ -0,0 +1,99 @@
+/*
+ * 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.debezium;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+public class DebeziumDb2ComponentTest {
+
+    @Test
+    void testIfConnectorEndpointCreatedWithConfig() throws Exception {
+        final Map<String, Object> params = new HashMap<>();
+        params.put("offsetStorageFileName", "/offset_test_file");
+        params.put("databaseHostname", "localhost");
+        params.put("databaseUser", "dbz");
+        params.put("databasePassword", "pwd");
+        params.put("databaseServerName", "test");
+        params.put("databaseServerId", 1234);
+        params.put("databaseHistoryFileFilename", "/db_history_file_test");
+
+        final String remaining = "test_name";
+        final String uri = "debezium?name=test_name&offsetStorageFileName=/test&"
+                           + "databaseHostname=localhost&databaseServerId=1234&databaseUser=dbz&databasePassword=pwd&"
+                           + "databaseServerName=test&databaseHistoryFileFilename=/test";
+
+        try (final DebeziumComponent debeziumComponent = new DebeziumDb2Component(new DefaultCamelContext())) {
+            debeziumComponent.start();
+            final DebeziumEndpoint debeziumEndpoint = debeziumComponent.createEndpoint(uri, remaining, params);
+
+            assertNotNull(debeziumEndpoint);
+
+            // test for config
+            final Db2ConnectorEmbeddedDebeziumConfiguration configuration
+                    = (Db2ConnectorEmbeddedDebeziumConfiguration) debeziumEndpoint.getConfiguration();
+            assertEquals("test_name", configuration.getName());
+            assertEquals("/offset_test_file", configuration.getOffsetStorageFileName());
+            assertEquals("localhost", configuration.getDatabaseHostname());
+            assertEquals("dbz", configuration.getDatabaseUser());
+            assertEquals("pwd", configuration.getDatabasePassword());
+            assertEquals("test", configuration.getDatabaseServerName());
+            assertEquals("/db_history_file_test", configuration.getDatabaseHistoryFileFilename());
+        }
+    }
+
+    @Test
+    void testIfCreatesComponentWithExternalConfiguration() throws Exception {
+        final Db2ConnectorEmbeddedDebeziumConfiguration configuration
+                = new Db2ConnectorEmbeddedDebeziumConfiguration();
+        configuration.setName("test_config");
+        configuration.setDatabaseUser("test_db");
+        configuration.setDatabasePassword("pwd");
+        configuration.setOffsetStorageFileName("/offset/file");
+        configuration.setDatabaseServerName("test");
+
+        final String uri = "debezium:dummy";
+        try (final DebeziumComponent debeziumComponent = new DebeziumDb2Component(new DefaultCamelContext())) {
+            debeziumComponent.start();
+
+            // set configurations
+            debeziumComponent.setConfiguration(configuration);
+
+            final DebeziumEndpoint debeziumEndpoint = debeziumComponent.createEndpoint(uri, null, Collections.emptyMap());
+
+            assertNotNull(debeziumEndpoint);
+
+            // assert configurations
+            final Db2ConnectorEmbeddedDebeziumConfiguration actualConfigurations
+                    = (Db2ConnectorEmbeddedDebeziumConfiguration) debeziumEndpoint.getConfiguration();
+            assertNotNull(actualConfigurations);
+            assertEquals(configuration.getName(), actualConfigurations.getName());
+            assertEquals(configuration.getDatabaseUser(), actualConfigurations.getDatabaseUser());
+            assertEquals(configuration.getConnectorClass(), actualConfigurations.getConnectorClass());
+        }
+    }
+
+}
diff --git a/components/camel-debezium/camel-debezium-db2/src/test/java/org/apache/camel/component/debezium/configuration/Db2ConnectorEmbeddedDebeziumConfigurationTest.java b/components/camel-debezium/camel-debezium-db2/src/test/java/org/apache/camel/component/debezium/configuration/Db2ConnectorEmbeddedDebeziumConfigurationTest.java
new file mode 100644
index 00000000000..2680211ff13
--- /dev/null
+++ b/components/camel-debezium/camel-debezium-db2/src/test/java/org/apache/camel/component/debezium/configuration/Db2ConnectorEmbeddedDebeziumConfigurationTest.java
@@ -0,0 +1,95 @@
+/*
+ * 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.debezium.configuration;
+
+import io.debezium.config.CommonConnectorConfig;
+import io.debezium.config.Configuration;
+import io.debezium.connector.db2.Db2Connector;
+import io.debezium.connector.db2.Db2ConnectorConfig;
+import io.debezium.embedded.EmbeddedEngine;
+import org.apache.camel.component.debezium.DebeziumConstants;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class Db2ConnectorEmbeddedDebeziumConfigurationTest {
+
+    // @Test
+    void testIfCreatesConfig() {
+        final Db2ConnectorEmbeddedDebeziumConfiguration configuration
+                = new Db2ConnectorEmbeddedDebeziumConfiguration();
+        configuration.setName("test_config");
+        configuration.setDatabaseUser("test_user");
+        configuration.setMaxQueueSize(1212);
+
+        final Configuration dbzConfigurations = configuration.createDebeziumConfiguration();
+
+        assertEquals("test_config", dbzConfigurations.getString(EmbeddedEngine.ENGINE_NAME));
+        assertEquals("test_user", dbzConfigurations.getString(Db2ConnectorConfig.USER));
+        assertEquals(1212, dbzConfigurations.getInteger(CommonConnectorConfig.MAX_QUEUE_SIZE));
+        assertEquals(Db2Connector.class.getName(), dbzConfigurations.getString(EmbeddedEngine.CONNECTOR_CLASS));
+        assertEquals(DebeziumConstants.DEFAULT_OFFSET_STORAGE,
+                dbzConfigurations.getString(EmbeddedEngine.OFFSET_STORAGE));
+    }
+
+    @Test
+    void testIfValidatesConfigurationCorrectly() {
+        final Db2ConnectorEmbeddedDebeziumConfiguration configuration
+                = new Db2ConnectorEmbeddedDebeziumConfiguration();
+
+        configuration.setName("test_config");
+        configuration.setDatabaseUser("test_db");
+        configuration.setDatabaseServerName("test_server");
+        configuration.setOffsetStorageFileName("/offset/file");
+        configuration.setDatabaseHistoryFileFilename("/database_history/file");
+
+        assertFalse(configuration.validateConfiguration().isValid());
+
+        configuration.setDatabaseHostname("localhost");
+        configuration.setDatabasePassword("test_pwd");
+
+        assertTrue(configuration.validateConfiguration().isValid());
+    }
+
+    @Test
+    void testValidateConfigurationsForAllRequiredFields() {
+        final Db2ConnectorEmbeddedDebeziumConfiguration configuration
+                = new Db2ConnectorEmbeddedDebeziumConfiguration();
+        configuration.setName("test_config");
+        configuration.setDatabaseUser("test_db");
+        configuration.setDatabaseHostname("localhost");
+        configuration.setDatabasePassword("test_pwd");
+        configuration.setDatabaseServerName("test_server");
+        configuration.setOffsetStorageFileName("/offset/file");
+        configuration.setDatabaseHistoryFileFilename("/database_history/file");
+
+        final ConfigurationValidation validation = configuration.validateConfiguration();
+        assertTrue(validation.isValid());
+
+        assertEquals("test_config", configuration.getName());
+        assertEquals("test_db", configuration.getDatabaseUser());
+        assertEquals("localhost", configuration.getDatabaseHostname());
+        assertEquals("test_pwd", configuration.getDatabasePassword());
+        assertEquals("test_server", configuration.getDatabaseServerName());
+        assertEquals("/offset/file", configuration.getOffsetStorageFileName());
+        assertEquals("/database_history/file", configuration.getDatabaseHistoryFileFilename());
+    }
+
+}
diff --git a/components/camel-debezium/camel-debezium-db2/src/test/resources/log4j2.properties b/components/camel-debezium/camel-debezium-db2/src/test/resources/log4j2.properties
new file mode 100644
index 00000000000..a3dd382bb91
--- /dev/null
+++ b/components/camel-debezium/camel-debezium-db2/src/test/resources/log4j2.properties
@@ -0,0 +1,30 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+
+appender.file.type = File
+appender.file.name = file
+appender.file.fileName = target/camel-debezium-test.log
+appender.file.layout.type = PatternLayout
+appender.file.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
+
+appender.out.type = Console
+appender.out.name = out
+appender.out.layout.type = PatternLayout
+appender.out.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
+
+rootLogger.level = INFO
+rootLogger.appenderRef.file.ref = file
\ No newline at end of file
diff --git a/components/camel-debezium/pom.xml b/components/camel-debezium/pom.xml
index afe5338654e..c039d524bf6 100644
--- a/components/camel-debezium/pom.xml
+++ b/components/camel-debezium/pom.xml
@@ -34,6 +34,7 @@
 
     <modules>
         <module>camel-debezium-common</module>
+        <module>camel-debezium-db2</module> 
         <module>camel-debezium-mongodb</module>
         <module>camel-debezium-mysql</module>
         <module>camel-debezium-oracle</module>