diff --git a/connectors/camel-rabbitmq-source-kafka-connector/pom.xml b/connectors/camel-rabbitmq-source-kafka-connector/pom.xml
deleted file mode 100644
index 3ee36cb..0000000
--- a/connectors/camel-rabbitmq-source-kafka-connector/pom.xml
+++ /dev/null
@@ -1,143 +0,0 @@
-<?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/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.camel.kafkaconnector</groupId>
-    <artifactId>connectors</artifactId>
-    <version>4.0.0-SNAPSHOT</version>
-  </parent>
-  <artifactId>camel-rabbitmq-source-kafka-connector</artifactId>
-  <name>Camel-Kafka-Connector :: rabbitmq-source</name>
-  <description>Camel Kafka Connector for rabbitmq-source</description>
-  <dependencies>
-    <!-- Kafka -->
-    <dependency>
-      <groupId>org.apache.kafka</groupId>
-      <artifactId>connect-api</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.kafka</groupId>
-      <artifactId>connect-transforms</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <!-- Camel -->
-    <!--START OF GENERATED CODE-->
-    <dependency>
-      <groupId>org.apache.camel.kafkaconnector</groupId>
-      <artifactId>camel-kafka-connector</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.camel</groupId>
-      <artifactId>camel-rabbitmq</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.camel</groupId>
-      <artifactId>camel-yaml-dsl</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.camel</groupId>
-      <artifactId>camel-kamelet</artifactId>
-    </dependency>
-    <!--END OF GENERATED CODE-->
-  </dependencies>
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <version>${version.maven.surefire.plugin}</version>
-        <configuration>
-          <failIfNoTests>false</failIfNoTests>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-        <version>${version.maven.jar}</version>
-        <configuration>
-          <archive>
-            <manifest>
-              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
-              <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
-            </manifest>
-          </archive>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>2.5.1</version>
-        <inherited>true</inherited>
-        <configuration>
-          <source>1.8</source>
-          <target>1.8</target>
-        </configuration>
-      </plugin>
-      <plugin>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <version>3.3.0</version>
-        <configuration>
-          <descriptors>
-            <descriptor>src/main/assembly/package.xml</descriptor>
-          </descriptors>
-        </configuration>
-        <executions>
-          <execution>
-            <id>make-assembly</id>
-            <phase>package</phase>
-            <goals>
-              <goal>single</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-  <!--START OF GENERATED CODE-->
-  <repositories>
-    <!-- camel-jira -->
-    <repository>
-      <id>atlassian-public</id>
-      <url>https://packages.atlassian.com/maven-external</url>
-      <name>Atlassian Public Repo</name>
-      <snapshots>
-        <enabled>false</enabled>
-      </snapshots>
-      <releases>
-        <enabled>true</enabled>
-      </releases>
-    </repository>
-    <!-- camel-ipfs and camel-weka -->
-    <repository>
-      <id>jboss.thirdparty</id>
-      <name>JBoss Thirdparty Repository</name>
-      <url>https://repository.jboss.org/nexus/service/local/repositories/thirdparty-releases/content/</url>
-      <snapshots>
-        <enabled>false</enabled>
-      </snapshots>
-      <releases>
-        <enabled>true</enabled>
-      </releases>
-    </repository>
-  </repositories>
-  <!--END OF GENERATED CODE-->
-</project>
diff --git a/connectors/camel-rabbitmq-source-kafka-connector/src/generated/descriptors/connector-source.properties b/connectors/camel-rabbitmq-source-kafka-connector/src/generated/descriptors/connector-source.properties
deleted file mode 100644
index fadb845..0000000
--- a/connectors/camel-rabbitmq-source-kafka-connector/src/generated/descriptors/connector-source.properties
+++ /dev/null
@@ -1 +0,0 @@
-camel-rabbitmq-source-source
\ No newline at end of file
diff --git a/connectors/camel-rabbitmq-source-kafka-connector/src/generated/resources/camel-rabbitmq-source-source.json b/connectors/camel-rabbitmq-source-kafka-connector/src/generated/resources/camel-rabbitmq-source-source.json
deleted file mode 100644
index e104399..0000000
--- a/connectors/camel-rabbitmq-source-kafka-connector/src/generated/resources/camel-rabbitmq-source-source.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
-	"connector": {
-		"class": "org.apache.camel.kafkaconnector.rabbitmqsource.CamelRabbitmqsourceSourceConnector",
-		"artifactId": "camel-rabbitmq-source-kafka-connector",
-		"groupId": "org.apache.camel.kafkaconnector",
-		"id": "camel-rabbitmq-source-source",
-		"type": "source",
-		"version": "3.20.1-SNAPSHOT",
-		"description": "Receive data from a RabbitMQ Broker."
-	},
-	"properties": {
-		"camel.kamelet.rabbitmq-source.addresses": {
-			"name": "camel.kamelet.rabbitmq-source.addresses",
-			"description": "Comma separated list of RabbitMQ broker addresses Example: localhost:5672",
-			"priority": "HIGH",
-			"required": "true"
-		},
-		"camel.kamelet.rabbitmq-source.routingKey": {
-			"name": "camel.kamelet.rabbitmq-source.routingKey",
-			"description": "The routing key to use when binding a consumer queue to the exchange",
-			"priority": "MEDIUM",
-			"required": "false"
-		},
-		"camel.kamelet.rabbitmq-source.username": {
-			"name": "camel.kamelet.rabbitmq-source.username",
-			"description": "The username to access the RabbitMQ server",
-			"priority": "MEDIUM",
-			"required": "false"
-		},
-		"camel.kamelet.rabbitmq-source.password": {
-			"name": "camel.kamelet.rabbitmq-source.password",
-			"description": "The password to access the RabbitMQ server",
-			"priority": "MEDIUM",
-			"required": "false"
-		},
-		"camel.kamelet.rabbitmq-source.exchangeName": {
-			"name": "camel.kamelet.rabbitmq-source.exchangeName",
-			"description": "The exchange name determines the exchange the queue will be bound to",
-			"priority": "HIGH",
-			"required": "true"
-		},
-		"camel.kamelet.rabbitmq-source.queue": {
-			"name": "camel.kamelet.rabbitmq-source.queue",
-			"description": "The queue to receive messages from",
-			"priority": "MEDIUM",
-			"required": "false"
-		},
-		"camel.kamelet.rabbitmq-source.vhost": {
-			"name": "camel.kamelet.rabbitmq-source.vhost",
-			"description": "The vhost for the channel",
-			"defaultValue": "\"\/\"",
-			"priority": "MEDIUM",
-			"required": "false"
-		}
-	}
-}
\ No newline at end of file
diff --git a/connectors/camel-rabbitmq-source-kafka-connector/src/main/assembly/package.xml b/connectors/camel-rabbitmq-source-kafka-connector/src/main/assembly/package.xml
deleted file mode 100644
index 05f0b1a..0000000
--- a/connectors/camel-rabbitmq-source-kafka-connector/src/main/assembly/package.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?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.
-
--->
-<assembly>
-  <!-- Assembles a packaged version targeting OS installation. -->
-  <id>package</id>
-  <formats>
-    <format>tar.gz</format>
-  </formats>
-  <includeBaseDirectory>false</includeBaseDirectory>
-  <fileSets>
-    <fileSet>
-      <directory>${project.basedir}/../..</directory>
-      <outputDirectory>${project.artifactId}/</outputDirectory>
-      <includes>
-        <include>README*</include>
-        <include>LICENSE*</include>
-        <include>NOTICE*</include>
-        <include>licenses/</include>
-      </includes>
-    </fileSet>
-    <fileSet>
-      <directory>${project.basedir}/src/main/docs</directory>
-      <outputDirectory>docs/</outputDirectory>
-      <includes>
-        <include>**/*</include>
-      </includes>
-    </fileSet>
-  </fileSets>
-  <dependencySets>
-    <dependencySet>
-      <outputDirectory>${project.artifactId}/</outputDirectory>
-      <useProjectArtifact>true</useProjectArtifact>
-      <useTransitiveFiltering>true</useTransitiveFiltering>
-      <excludes>
-        <exclude>org.apache.kafka:connect-api</exclude>
-      </excludes>
-    </dependencySet>
-  </dependencySets>
-</assembly>
diff --git a/connectors/camel-rabbitmq-source-kafka-connector/src/main/docs/examples/CamelRabbitmqsourceSourceConnector.properties b/connectors/camel-rabbitmq-source-kafka-connector/src/main/docs/examples/CamelRabbitmqsourceSourceConnector.properties
deleted file mode 100644
index 81dff27..0000000
--- a/connectors/camel-rabbitmq-source-kafka-connector/src/main/docs/examples/CamelRabbitmqsourceSourceConnector.properties
+++ /dev/null
@@ -1,34 +0,0 @@
-## ---------------------------------------------------------------------------
-## 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.
-## ---------------------------------------------------------------------------
-
-name=CamelRabbitmq-sourceSourceConnector
-connector.class=org.apache.camel.kafkaconnector.rabbitmqsource.CamelRabbitmqsourceSourceConnector
-tasks.max=1
-
-# use the kafka converters that better suit your needs, these are just defaults:
-key.converter=org.apache.kafka.connect.storage.StringConverter
-value.converter=org.apache.kafka.connect.storage.StringConverter
-
-# comma separated topics to send messages into
-topics=
-
-# mandatory properties (for a complete properties list see the connector documentation):
-
-# Comma separated list of RabbitMQ broker addresses Example: localhost:5672
-camel.kamelet.rabbitmq-source.addresses=
-# The exchange name determines the exchange the queue will be bound to
-camel.kamelet.rabbitmq-source.exchangeName=
diff --git a/connectors/camel-rabbitmq-source-kafka-connector/src/main/java/org/apache/camel/kafkaconnector/rabbitmqsource/CamelRabbitmqsourceSourceConnector.java b/connectors/camel-rabbitmq-source-kafka-connector/src/main/java/org/apache/camel/kafkaconnector/rabbitmqsource/CamelRabbitmqsourceSourceConnector.java
deleted file mode 100644
index acc0a7c..0000000
--- a/connectors/camel-rabbitmq-source-kafka-connector/src/main/java/org/apache/camel/kafkaconnector/rabbitmqsource/CamelRabbitmqsourceSourceConnector.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.kafkaconnector.rabbitmqsource;
-
-import javax.annotation.Generated;
-import org.apache.camel.kafkaconnector.CamelSourceConnector;
-import org.apache.kafka.common.config.ConfigDef;
-import org.apache.kafka.connect.connector.Task;
-
-@Generated("This class has been generated by camel-kafka-connector-generator-maven-plugin, remove this annotation to prevent it from being generated.")
-public class CamelRabbitmqsourceSourceConnector extends CamelSourceConnector {
-
-    @Override
-    public ConfigDef config() {
-        return CamelRabbitmqsourceSourceConnectorConfig.conf();
-    }
-    @Override
-    public Class<? extends Task> taskClass() {
-        return CamelRabbitmqsourceSourceTask.class;
-    }
-}
\ No newline at end of file
diff --git a/connectors/camel-rabbitmq-source-kafka-connector/src/main/java/org/apache/camel/kafkaconnector/rabbitmqsource/CamelRabbitmqsourceSourceConnectorConfig.java b/connectors/camel-rabbitmq-source-kafka-connector/src/main/java/org/apache/camel/kafkaconnector/rabbitmqsource/CamelRabbitmqsourceSourceConnectorConfig.java
deleted file mode 100644
index adba3a6..0000000
--- a/connectors/camel-rabbitmq-source-kafka-connector/src/main/java/org/apache/camel/kafkaconnector/rabbitmqsource/CamelRabbitmqsourceSourceConnectorConfig.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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.kafkaconnector.rabbitmqsource;
-
-import java.util.Map;
-import javax.annotation.Generated;
-import org.apache.camel.kafkaconnector.CamelSourceConnectorConfig;
-import org.apache.kafka.common.config.ConfigDef;
-
-@Generated("This class has been generated by camel-kafka-connector-generator-maven-plugin, remove this annotation to prevent it from being generated.")
-public class CamelRabbitmqsourceSourceConnectorConfig
-        extends
-            CamelSourceConnectorConfig {
-
-    public static final String CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_ADDRESSES_CONF = "camel.kamelet.rabbitmq-source.addresses";
-    public static final String CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_ADDRESSES_DOC = "Comma separated list of RabbitMQ broker addresses Example: localhost:5672";
-    public static final String CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_ADDRESSES_DEFAULT = null;
-    public static final String CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_ROUTING_KEY_CONF = "camel.kamelet.rabbitmq-source.routingKey";
-    public static final String CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_ROUTING_KEY_DOC = "The routing key to use when binding a consumer queue to the exchange";
-    public static final String CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_ROUTING_KEY_DEFAULT = null;
-    public static final String CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_USERNAME_CONF = "camel.kamelet.rabbitmq-source.username";
-    public static final String CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_USERNAME_DOC = "The username to access the RabbitMQ server";
-    public static final String CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_USERNAME_DEFAULT = null;
-    public static final String CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_PASSWORD_CONF = "camel.kamelet.rabbitmq-source.password";
-    public static final String CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_PASSWORD_DOC = "The password to access the RabbitMQ server";
-    public static final String CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_PASSWORD_DEFAULT = null;
-    public static final String CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_EXCHANGE_NAME_CONF = "camel.kamelet.rabbitmq-source.exchangeName";
-    public static final String CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_EXCHANGE_NAME_DOC = "The exchange name determines the exchange the queue will be bound to";
-    public static final String CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_EXCHANGE_NAME_DEFAULT = null;
-    public static final String CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_QUEUE_CONF = "camel.kamelet.rabbitmq-source.queue";
-    public static final String CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_QUEUE_DOC = "The queue to receive messages from";
-    public static final String CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_QUEUE_DEFAULT = null;
-    public static final String CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_VHOST_CONF = "camel.kamelet.rabbitmq-source.vhost";
-    public static final String CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_VHOST_DOC = "The vhost for the channel";
-    public static final String CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_VHOST_DEFAULT = "/";
-
-    public CamelRabbitmqsourceSourceConnectorConfig(
-            ConfigDef config,
-            Map<String, String> parsedConfig) {
-        super(config, parsedConfig);
-    }
-
-    public CamelRabbitmqsourceSourceConnectorConfig(
-            Map<String, String> parsedConfig) {
-        this(conf(), parsedConfig);
-    }
-
-    public static ConfigDef conf() {
-        ConfigDef conf = new ConfigDef(CamelSourceConnectorConfig.conf());
-        conf.define(CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_ADDRESSES_CONF, ConfigDef.Type.STRING, CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_ADDRESSES_DEFAULT, ConfigDef.Importance.HIGH, CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_ADDRESSES_DOC);
-        conf.define(CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_ROUTING_KEY_CONF, ConfigDef.Type.STRING, CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_ROUTING_KEY_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_ROUTING_KEY_DOC);
-        conf.define(CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_USERNAME_CONF, ConfigDef.Type.STRING, CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_USERNAME_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_USERNAME_DOC);
-        conf.define(CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_PASSWORD_CONF, ConfigDef.Type.PASSWORD, CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_PASSWORD_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_PASSWORD_DOC);
-        conf.define(CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_EXCHANGE_NAME_CONF, ConfigDef.Type.STRING, CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_EXCHANGE_NAME_DEFAULT, ConfigDef.Importance.HIGH, CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_EXCHANGE_NAME_DOC);
-        conf.define(CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_QUEUE_CONF, ConfigDef.Type.STRING, CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_QUEUE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_QUEUE_DOC);
-        conf.define(CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_VHOST_CONF, ConfigDef.Type.STRING, CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_VHOST_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SOURCE_RABBITMQSOURCE_KAMELET_VHOST_DOC);
-        return conf;
-    }
-}
\ No newline at end of file
diff --git a/connectors/camel-rabbitmq-source-kafka-connector/src/main/java/org/apache/camel/kafkaconnector/rabbitmqsource/CamelRabbitmqsourceSourceTask.java b/connectors/camel-rabbitmq-source-kafka-connector/src/main/java/org/apache/camel/kafkaconnector/rabbitmqsource/CamelRabbitmqsourceSourceTask.java
deleted file mode 100644
index 06cd21a..0000000
--- a/connectors/camel-rabbitmq-source-kafka-connector/src/main/java/org/apache/camel/kafkaconnector/rabbitmqsource/CamelRabbitmqsourceSourceTask.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.kafkaconnector.rabbitmqsource;
-
-import java.util.HashMap;
-import java.util.Map;
-import javax.annotation.Generated;
-import org.apache.camel.kafkaconnector.CamelSourceConnectorConfig;
-import org.apache.camel.kafkaconnector.CamelSourceTask;
-
-@Generated("This class has been generated by camel-kafka-connector-generator-maven-plugin, remove this annotation to prevent it from being generated.")
-public class CamelRabbitmqsourceSourceTask extends CamelSourceTask {
-
-    @Override
-    protected CamelSourceConnectorConfig getCamelSourceConnectorConfig(
-            Map<String, String> props) {
-        return new CamelRabbitmqsourceSourceConnectorConfig(props);
-    }
-    @Override
-    protected String getSourceKamelet() {
-        return "kamelet:rabbitmq-source";
-    }
-}
\ No newline at end of file
diff --git a/connectors/camel-rabbitmq-source-kafka-connector/src/main/resources/META-INF/LICENSE.txt b/connectors/camel-rabbitmq-source-kafka-connector/src/main/resources/META-INF/LICENSE.txt
deleted file mode 100644
index 6b0b127..0000000
--- a/connectors/camel-rabbitmq-source-kafka-connector/src/main/resources/META-INF/LICENSE.txt
+++ /dev/null
@@ -1,203 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
diff --git a/connectors/camel-rabbitmq-source-kafka-connector/src/main/resources/META-INF/NOTICE.txt b/connectors/camel-rabbitmq-source-kafka-connector/src/main/resources/META-INF/NOTICE.txt
deleted file mode 100644
index 2e215bf..0000000
--- a/connectors/camel-rabbitmq-source-kafka-connector/src/main/resources/META-INF/NOTICE.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-   =========================================================================
-   ==  NOTICE file corresponding to the section 4 d of                    ==
-   ==  the Apache License, Version 2.0,                                   ==
-   ==  in this case for the Apache Camel distribution.                    ==
-   =========================================================================
-
-   This product includes software developed by
-   The Apache Software Foundation (http://www.apache.org/).
-
-   Please read the different LICENSE files present in the licenses directory of
-   this distribution.
diff --git a/connectors/camel-rabbitmq-source-kafka-connector/src/main/resources/kamelets/rabbitmq-source.kamelet.yaml b/connectors/camel-rabbitmq-source-kafka-connector/src/main/resources/kamelets/rabbitmq-source.kamelet.yaml
deleted file mode 100644
index c54bdce..0000000
--- a/connectors/camel-rabbitmq-source-kafka-connector/src/main/resources/kamelets/rabbitmq-source.kamelet.yaml
+++ /dev/null
@@ -1,90 +0,0 @@
-# ---------------------------------------------------------------------------
-# 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.
-# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1alpha1
-kind: Kamelet
-metadata:
-  name: rabbitmq-source
-  annotations:
-    camel.apache.org/kamelet.support.level: "Stable"
-    camel.apache.org/catalog.version: "3.21.0"
-    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjcxcHgiIGhlaWdodD0iMjcxcHgiIHZpZXdCb3g9Ii03LjUgMCAyNzEgMjcxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj48cGF0aCBkPSJNMjQ1LjQ0IDEwOC4zMDhoLTg1LjA5YTcuNzM4IDcuNzM4IDAgMCAxLTcuNzM1LTcuNzM0di04OC42OEMxNTIuNjE1IDUuMzI3IDE0Ny4yOSAwIDE0MC43MjYgMGgtMzAuMzc1Yy02LjU2OCAwLTExLjg5IDUuMzI3LTExLjg5IDExLjg5NHY4OC4xNDNjMCA0LjU3My0zLjY5NyA4LjI5LTguMjcgOC4zMWwtMjcuODg1LjEzM2MtNC42MTIuMDI1LTguMzU5LTMuNzE3LTguMzUtOC4zMjVsLjE3My04OC4yNDFDNTQuMTQ0IDUuMzM3IDQ4LjgxNyAwIDQyLjI0IDBIMTEuODlDNS4zMjEgMCAwIDUuMzI3IDAgMTEuODk0VjI2MC4yMWMwIDUuODM0IDQuNzI2IDEwLjU2IDEwLjU1NSAxMC41NkgyNDUuNDRjNS44MzQgMCAxMC41Ni00LjcyNiAxMC41Ni0xMC41NlYxMTguODY4YzAtNS44MzQtNC43MjYtMTAuNTYtMTAuNTYtMTAuNTZ6bS0zOS45MDIgOTMuMjMzYzAgNy42NDUtNi4xOTggMTMuODQ0LTEzLjg0MyAxMy44NDRIMTY3LjY5Yy03LjY0NiAwLTEzLjg0NC02LjE5OS0xMy44NDQtMTMuODQ0di0yNC4wMDVjMC03LjY0NiA2LjE5OC0xMy44NDQgMTMuODQ0LTEzLjg0NGgyNC4wMDVjNy42NDUgMCAxMy44NDMgNi4xOTggMTMuODQzIDEzLjg0NHYyNC4wMDV6IiBmaWxsPSIjRjYwIi8+PC9zdmc+"
-    camel.apache.org/provider: "Apache Software Foundation"
-    camel.apache.org/kamelet.group: "RabbitMQ"
-    camel.apache.org/kamelet.namespace: "Messaging"
-  labels:
-    camel.apache.org/kamelet.type: "source"
-spec:
-  definition:
-    title: "RabbitMQ Source"
-    description: |-
-      Receive data from a RabbitMQ Broker.
-    required:
-      - addresses
-      - exchangeName
-    type: object
-    properties:
-      addresses:
-        title: Addresses
-        description: Comma separated list of RabbitMQ broker addresses
-        type: string
-        example: "localhost:5672"
-      routingKey:
-        title: Routing Key
-        description: The routing key to use when binding a consumer queue to the exchange
-        type: string
-      username:
-        title: Username
-        description: The username to access the RabbitMQ server
-        type: string
-        x-descriptors:
-        - urn:camel:group:credentials
-      password:
-        title: Password
-        description: The password to access the RabbitMQ server
-        type: string
-        format: password
-        x-descriptors:
-        - urn:alm:descriptor:com.tectonic.ui:password
-        - urn:camel:group:credentials
-      exchangeName:
-        title: Exchange name
-        description: The exchange name determines the exchange the queue will be bound to
-        type: string
-      queue:
-        title: Queue name
-        description: The queue to receive messages from
-        type: string
-      vhost:
-        title: Virtual Host
-        description: The vhost for the channel
-        type: string
-        default: "/"
-  dependencies:
-    - "camel:rabbitmq"
-    - "camel:kamelet"
-  template:
-    from:
-      uri: "rabbitmq://{{exchangeName}}"
-      parameters:
-        password: "{{?password}}"
-        username: "{{?username}}"
-        addresses: "{{addresses}}"
-        routingKey: "{{?routingKey}}"
-        queue: "{{?queue}}"
-        vhost: "{{vhost}}"
-      steps:
-      - to: "kamelet:sink"
\ No newline at end of file
diff --git a/connectors/pom.xml b/connectors/pom.xml
index 65c8b1a..dcc1656 100644
--- a/connectors/pom.xml
+++ b/connectors/pom.xml
@@ -347,7 +347,6 @@
         <module>camel-postgresql-source-kafka-connector</module>
         <module>camel-pulsar-sink-kafka-connector</module>
         <module>camel-pulsar-source-kafka-connector</module>
-        <module>camel-rabbitmq-source-kafka-connector</module>
         <module>camel-redis-sink-kafka-connector</module>
         <module>camel-redis-source-kafka-connector</module>
         <module>camel-rest-openapi-sink-kafka-connector</module>
