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 2021/08/20 04:22:43 UTC

[camel] branch main updated: CAMEL 16876: Base commit for Huawei Cloud DMS component (#5965)

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 5a237cc  CAMEL 16876: Base commit for Huawei Cloud DMS component (#5965)
5a237cc is described below

commit 5a237cc143c1c878035c3ad36b4fa689c1adb511
Author: Hokutor <hw...@huawei.com>
AuthorDate: Fri Aug 20 00:22:08 2021 -0400

    CAMEL 16876: Base commit for Huawei Cloud DMS component (#5965)
    
    * CAMEL-16876: Base commit for Huawei Cloud DMS component
    
    * CAMEL-16876: Update Huawei parent pom
    
    * CAMEL-16876: Update Huawei parent pom indentation
    
    * CAMEL-16876: Update description
---
 bom/camel-bom/pom.xml                              |   5 +
 .../camel/catalog/docs/hwcloud-dms-component.adoc  | 176 +++++
 .../camel-huawei/camel-huaweicloud-dms/pom.xml     |  86 +++
 .../huaweicloud/dms/DMSComponentConfigurer.java    |  55 ++
 .../huaweicloud/dms/DMSEndpointConfigurer.java     | 118 ++++
 .../huaweicloud/dms/DMSEndpointUriFactory.java     |  81 +++
 .../apache/camel/configurer/hwcloud-dms-component  |   2 +
 .../apache/camel/configurer/hwcloud-dms-endpoint   |   2 +
 .../services/org/apache/camel/other.properties     |   7 +
 .../apache/camel/urifactory/hwcloud-dms-endpoint   |   2 +
 .../src/generated/resources/huaweicloud-dms.json   |  14 +
 .../component/huaweicloud/dms/hwcloud-dms.json     |  45 ++
 .../src/main/docs/hwcloud-dms-component.adoc       | 176 +++++
 .../component/huaweicloud/dms/DMSComponent.java    |  32 +
 .../component/huaweicloud/dms/DMSEndpoint.java     | 295 ++++++++
 .../component/huaweicloud/dms/DMSProducer.java     | 146 ++++
 .../camel/component/huaweicloud/dms/DmsClient.java |  48 ++
 .../camel/component/huaweicloud/dms/DmsMeta.java   |  73 ++
 .../huaweicloud/dms/constants/DMSOperations.java   |  28 +
 .../huaweicloud/dms/constants/DMSProperties.java   |  29 +
 .../dms/models/ClientConfigurations.java           |  55 ++
 .../huaweicloud/dms/models/DmsInstance.java        | 782 +++++++++++++++++++++
 .../huaweicloud/dms/models/DmsRegion.java          |  73 ++
 .../dms/models/ListInstancesRequest.java           |  50 ++
 .../dms/models/ListInstancesResponse.java          |  80 +++
 .../dms/models/QueryInstanceRequest.java           |  50 ++
 .../org/apache/camel/component/hwcloud-dms         |   1 +
 .../huaweicloud/dms/ListInstancesTest.java         | 107 +++
 .../huaweicloud/dms/QueryInstanceTest.java         |  87 +++
 .../huaweicloud/dms/TestConfiguration.java         |  45 ++
 .../dms/constants/DMSOperationsTest.java           |  29 +
 .../dms/constants/DMSPropertiesTest.java           |  30 +
 .../src/test/resources/log4j2.properties           |  28 +
 components/camel-huawei/pom.xml                    |   5 +-
 core/camel-allcomponents/pom.xml                   |   4 +
 .../component/ComponentsBuilderFactory.java        |  14 +
 .../dsl/HwcloudDmsComponentBuilderFactory.java     | 123 ++++
 .../src/generated/resources/metadata.json          |  22 +
 .../builder/endpoint/EndpointBuilderFactory.java   |  55 +-
 .../camel/builder/endpoint/EndpointBuilders.java   |  55 +-
 .../builder/endpoint/StaticEndpointBuilders.java   |  45 ++
 .../endpoint/dsl/DMSEndpointBuilderFactory.java    | 378 ++++++++++
 .../modules/ROOT/pages/hwcloud-dms-component.adoc  | 178 +++++
 parent/pom.xml                                     |   5 +
 44 files changed, 3665 insertions(+), 56 deletions(-)

diff --git a/bom/camel-bom/pom.xml b/bom/camel-bom/pom.xml
index 5df5f4b..954812a 100644
--- a/bom/camel-bom/pom.xml
+++ b/bom/camel-bom/pom.xml
@@ -942,6 +942,11 @@
         <artifactId>camel-huaweicloud-common</artifactId>
         <version>${project.version}</version>
       </dependency>
+	  <dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-huaweicloud-dms</artifactId>
+        <version>${project.version}</version>
+      </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
         <artifactId>camel-huaweicloud-functiongraph</artifactId>
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/hwcloud-dms-component.adoc b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/hwcloud-dms-component.adoc
new file mode 100644
index 0000000..be5f9ba
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/hwcloud-dms-component.adoc
@@ -0,0 +1,176 @@
+[[hwcloud-dms-component]]
+= Huawei Distributed Message Service (DMS) Component
+:docTitle: Huawei Distributed Message Service (DMS)
+:artifactId: camel-huaweicloud-dms
+:description: To integrate with a fully managed, high-performance message queuing service on Huawei Cloud
+:since: 3.12
+:supportLevel: Preview
+:component-header: Only producer is supported
+include::{cq-version}@camel-quarkus:ROOT:partial$reference/components/hwcloud-dms.adoc[opts=optional]
+//Manually maintained attributes
+:group: Huawei Cloud
+
+*Since Camel {since}*
+
+*{component-header}*
+
+
+Huawei Cloud Distributed Message Service (DMS) component allows you to integrate with https://www.huaweicloud.com/intl/en-us/product/dms.html[DMS] provided by Huawei Cloud.
+
+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-huaweicloud-dms</artifactId>
+    <version>x.x.x</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+----
+
+== URI Format
+
+----
+hwcloud-dms:operation[?options]
+----
+
+// component-configure options: START
+== Configuring Options
+
+Camel components are configured on two separate levels:
+
+- component level
+- endpoint level
+
+=== Configuring Component Options
+
+The component level is the highest level which holds general and common configurations that are inherited by the endpoints.
+For example a component may have security settings, credentials for authentication, urls for network connection and so forth.
+
+Some components only have a few options, and others may have many. Because components typically have pre configured defaults
+that are commonly used, then you may often only need to configure a few options on a component; or none at all.
+
+Configuring components can be done with the xref:latest@manual::component-dsl.adoc[Component DSL],
+in a configuration file (application.properties|yaml), or directly with Java code.
+
+=== Configuring Endpoint Options
+
+Where you find yourself configuring the most is on endpoints, as endpoints often have many options, which allows you to
+configure what you need the endpoint to do. The options are also categorized into whether the endpoint is used as consumer (from)
+or as a producer (to), or used for both.
+
+Configuring endpoints is most often done directly in the endpoint URI as path and query parameters. You can also use
+the xref:latest@manual::Endpoint-dsl.adoc[Endpoint DSL] as a _type safe_ way of configuring endpoints.
+
+A good practice when configuring options is to use xref:latest@manual::using-propertyplaceholder.adoc[Property Placeholders],
+which allows to not hardcode urls, port numbers, sensitive information, and other settings.
+In other words placeholders allows to externalize the configuration from your code, and gives more flexibility and reuse.
+
+The following two sections lists all the options, firstly for the component followed by the endpoint.
+// component-configure options: END
+
+// component options: START
+== Component Options
+
+
+The Huawei Distributed Message Service (DMS) component supports 2 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
+| *autowiredEnabled* (advanced) | Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | boolean
+|===
+// component options: END
+
+// endpoint options: START
+== Endpoint Options
+
+The Huawei Distributed Message Service (DMS) endpoint is configured using URI syntax:
+
+----
+hwcloud-dms:operation
+----
+
+with the following path and query parameters:
+
+=== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *operation* | *Required* Operation to be performed |  | String
+|===
+
+
+=== Query Parameters (14 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *authenticationKey* (producer) | *Required* Authentication key for the cloud user |  | String
+| *endpoint* (producer) | DMS url. Carries higher precedence than region parameter based client initialization |  | String
+| *engine* (producer) | The message engine. Either kafka or rabbitmq. If the parameter is not specified, all instances will be queried. There are 2 enums and the value can be one of: kafka, rabbitmq |  | String
+| *ignoreSslVerification* (producer) | Ignore SSL verification | false | boolean
+| *instanceId* (producer) | The id of the instance. This option is mandatory when querying an instance |  | String
+| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
+| *projectId* (producer) | *Required* Cloud project ID |  | String
+| *proxyHost* (producer) | Proxy server ip/hostname |  | String
+| *proxyPassword* (producer) | Proxy authentication password |  | String
+| *proxyPort* (producer) | Proxy server port |  | int
+| *proxyUser* (producer) | Proxy authentication user |  | String
+| *region* (producer) | *Required* DMS service region |  | String
+| *secretKey* (producer) | *Required* Secret key for the cloud user |  | String
+| *serviceKeys* (producer) | Configuration object for cloud service authentication |  | ServiceKeys
+|===
+// endpoint options: END
+
+
+== Usage
+
+=== Message properties evaluated by the DMS producer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelHwCloudDmsOperation` |`String` | Name of operation to invoke
+
+|`CamelHwCloudDmsEngine` |`String` | The message engine. Either kafka or rabbitmq
+
+|`CamelHwCloudDmsInstanceId` |`String` | Instance ID to invoke operation on
+
+|=======================================================================
+
+If any of the above properties are set, they will override their corresponding query parameter.
+
+== List of Supported DMS Operations
+
+- listInstances
+- queryInstance
+
+== Using ServiceKey Configuration Bean
+
+Authentication key and secret keys are required to authenticate against cloud DMS service. You can avoid having them being exposed
+and scattered over in your endpoint uri by wrapping them inside a bean of class `org.apache.camel.component.huaweicloud.common.models.ServiceKeys`.
+Add it to the registry and let Camel look it up by referring the object via endpoint query parameter `serviceKeys`.
+
+Check the following code snippets:
+
+[source,xml]
+----
+<bean id="myServiceKeyConfig" class="org.apache.camel.component.huaweicloud.common.models.ServiceKeys">
+   <property name="authenticationKey" value="your_authentication_key" />
+   <property name="secretKey" value="your_secret_key" />
+</bean>
+----
+[source,java]
+----
+from("direct:triggerRoute")
+ .to("hwcloud-dms:listInstances?region=cn-north-4&serviceKeys=#myServiceKeyConfig")
+----
diff --git a/components/camel-huawei/camel-huaweicloud-dms/pom.xml b/components/camel-huawei/camel-huaweicloud-dms/pom.xml
new file mode 100644
index 0000000..88a91fb
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/pom.xml
@@ -0,0 +1,86 @@
+<?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-huawei-parent</artifactId>
+    <version>3.12.0-SNAPSHOT</version>
+  </parent>
+
+  <properties>
+    <firstVersion>3.12.0</firstVersion>
+  </properties>
+
+  <artifactId>camel-huaweicloud-dms</artifactId>
+  <packaging>jar</packaging>
+  <name>Camel :: Huawei Cloud :: DMS Component</name>
+  <description>To integrate with a fully managed, high-performance message queuing service on Huawei Cloud</description>
+
+  <dependencies>
+
+    <!-- camel -->
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-support</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-huaweicloud-common</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>com.huaweicloud.sdk</groupId>
+      <artifactId>huaweicloud-sdk-core</artifactId>
+      <version>${huaweicloud-sdk-version}</version>
+    </dependency>
+
+    <!-- logging -->
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-slf4j-impl</artifactId>
+      <version>${log4j2-version}</version>
+      <scope>test</scope>
+    </dependency>
+
+    <!-- testing -->
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-api</artifactId>
+      <version>${junit-jupiter-version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-test</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-core</artifactId>
+      <version>${mockito-version}</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/generated/java/org/apache/camel/component/huaweicloud/dms/DMSComponentConfigurer.java b/components/camel-huawei/camel-huaweicloud-dms/src/generated/java/org/apache/camel/component/huaweicloud/dms/DMSComponentConfigurer.java
new file mode 100644
index 0000000..8bcf3c0
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/generated/java/org/apache/camel/component/huaweicloud/dms/DMSComponentConfigurer.java
@@ -0,0 +1,55 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.huaweicloud.dms;
+
+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 DMSComponentConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        DMSComponent target = (DMSComponent) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "autowiredenabled":
+        case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true;
+        case "lazystartproducer":
+        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "autowiredenabled":
+        case "autowiredEnabled": return boolean.class;
+        case "lazystartproducer":
+        case "lazyStartProducer": return boolean.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        DMSComponent target = (DMSComponent) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "autowiredenabled":
+        case "autowiredEnabled": return target.isAutowiredEnabled();
+        case "lazystartproducer":
+        case "lazyStartProducer": return target.isLazyStartProducer();
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/generated/java/org/apache/camel/component/huaweicloud/dms/DMSEndpointConfigurer.java b/components/camel-huawei/camel-huaweicloud-dms/src/generated/java/org/apache/camel/component/huaweicloud/dms/DMSEndpointConfigurer.java
new file mode 100644
index 0000000..b4cdff6
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/generated/java/org/apache/camel/component/huaweicloud/dms/DMSEndpointConfigurer.java
@@ -0,0 +1,118 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.huaweicloud.dms;
+
+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 DMSEndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        DMSEndpoint target = (DMSEndpoint) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "authenticationkey":
+        case "authenticationKey": target.setAuthenticationKey(property(camelContext, java.lang.String.class, value)); return true;
+        case "endpoint": target.setEndpoint(property(camelContext, java.lang.String.class, value)); return true;
+        case "engine": target.setEngine(property(camelContext, java.lang.String.class, value)); return true;
+        case "ignoresslverification":
+        case "ignoreSslVerification": target.setIgnoreSslVerification(property(camelContext, boolean.class, value)); return true;
+        case "instanceid":
+        case "instanceId": target.setInstanceId(property(camelContext, java.lang.String.class, value)); return true;
+        case "lazystartproducer":
+        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
+        case "projectid":
+        case "projectId": target.setProjectId(property(camelContext, java.lang.String.class, value)); return true;
+        case "proxyhost":
+        case "proxyHost": target.setProxyHost(property(camelContext, java.lang.String.class, value)); return true;
+        case "proxypassword":
+        case "proxyPassword": target.setProxyPassword(property(camelContext, java.lang.String.class, value)); return true;
+        case "proxyport":
+        case "proxyPort": target.setProxyPort(property(camelContext, int.class, value)); return true;
+        case "proxyuser":
+        case "proxyUser": target.setProxyUser(property(camelContext, java.lang.String.class, value)); return true;
+        case "region": target.setRegion(property(camelContext, java.lang.String.class, value)); return true;
+        case "secretkey":
+        case "secretKey": target.setSecretKey(property(camelContext, java.lang.String.class, value)); return true;
+        case "servicekeys":
+        case "serviceKeys": target.setServiceKeys(property(camelContext, org.apache.camel.component.huaweicloud.common.models.ServiceKeys.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "authenticationkey":
+        case "authenticationKey": return java.lang.String.class;
+        case "endpoint": return java.lang.String.class;
+        case "engine": return java.lang.String.class;
+        case "ignoresslverification":
+        case "ignoreSslVerification": return boolean.class;
+        case "instanceid":
+        case "instanceId": return java.lang.String.class;
+        case "lazystartproducer":
+        case "lazyStartProducer": return boolean.class;
+        case "projectid":
+        case "projectId": return java.lang.String.class;
+        case "proxyhost":
+        case "proxyHost": return java.lang.String.class;
+        case "proxypassword":
+        case "proxyPassword": return java.lang.String.class;
+        case "proxyport":
+        case "proxyPort": return int.class;
+        case "proxyuser":
+        case "proxyUser": return java.lang.String.class;
+        case "region": return java.lang.String.class;
+        case "secretkey":
+        case "secretKey": return java.lang.String.class;
+        case "servicekeys":
+        case "serviceKeys": return org.apache.camel.component.huaweicloud.common.models.ServiceKeys.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        DMSEndpoint target = (DMSEndpoint) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "authenticationkey":
+        case "authenticationKey": return target.getAuthenticationKey();
+        case "endpoint": return target.getEndpoint();
+        case "engine": return target.getEngine();
+        case "ignoresslverification":
+        case "ignoreSslVerification": return target.isIgnoreSslVerification();
+        case "instanceid":
+        case "instanceId": return target.getInstanceId();
+        case "lazystartproducer":
+        case "lazyStartProducer": return target.isLazyStartProducer();
+        case "projectid":
+        case "projectId": return target.getProjectId();
+        case "proxyhost":
+        case "proxyHost": return target.getProxyHost();
+        case "proxypassword":
+        case "proxyPassword": return target.getProxyPassword();
+        case "proxyport":
+        case "proxyPort": return target.getProxyPort();
+        case "proxyuser":
+        case "proxyUser": return target.getProxyUser();
+        case "region": return target.getRegion();
+        case "secretkey":
+        case "secretKey": return target.getSecretKey();
+        case "servicekeys":
+        case "serviceKeys": return target.getServiceKeys();
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/generated/java/org/apache/camel/component/huaweicloud/dms/DMSEndpointUriFactory.java b/components/camel-huawei/camel-huaweicloud-dms/src/generated/java/org/apache/camel/component/huaweicloud/dms/DMSEndpointUriFactory.java
new file mode 100644
index 0000000..30baf58
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/generated/java/org/apache/camel/component/huaweicloud/dms/DMSEndpointUriFactory.java
@@ -0,0 +1,81 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.huaweicloud.dms;
+
+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 DMSEndpointUriFactory extends org.apache.camel.support.component.EndpointUriFactorySupport implements EndpointUriFactory {
+
+    private static final String BASE = ":operation";
+
+    private static final Set<String> PROPERTY_NAMES;
+    private static final Set<String> SECRET_PROPERTY_NAMES;
+    static {
+        Set<String> props = new HashSet<>(15);
+        props.add("serviceKeys");
+        props.add("secretKey");
+        props.add("proxyPassword");
+        props.add("ignoreSslVerification");
+        props.add("authenticationKey");
+        props.add("proxyHost");
+        props.add("proxyPort");
+        props.add("endpoint");
+        props.add("lazyStartProducer");
+        props.add("instanceId");
+        props.add("engine");
+        props.add("proxyUser");
+        props.add("region");
+        props.add("operation");
+        props.add("projectId");
+        PROPERTY_NAMES = Collections.unmodifiableSet(props);
+        Set<String> secretProps = new HashSet<>(5);
+        secretProps.add("serviceKeys");
+        secretProps.add("secretKey");
+        secretProps.add("proxyPassword");
+        secretProps.add("proxyUser");
+        secretProps.add("authenticationKey");
+        SECRET_PROPERTY_NAMES = Collections.unmodifiableSet(secretProps);
+    }
+
+    @Override
+    public boolean isEnabled(String scheme) {
+        return "hwcloud-dms".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, "operation", 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 boolean isLenientProperties() {
+        return false;
+    }
+}
+
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/META-INF/services/org/apache/camel/configurer/hwcloud-dms-component b/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/META-INF/services/org/apache/camel/configurer/hwcloud-dms-component
new file mode 100644
index 0000000..e8553c9
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/META-INF/services/org/apache/camel/configurer/hwcloud-dms-component
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.huaweicloud.dms.DMSComponentConfigurer
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/META-INF/services/org/apache/camel/configurer/hwcloud-dms-endpoint b/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/META-INF/services/org/apache/camel/configurer/hwcloud-dms-endpoint
new file mode 100644
index 0000000..93d7d43
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/META-INF/services/org/apache/camel/configurer/hwcloud-dms-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.huaweicloud.dms.DMSEndpointConfigurer
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/META-INF/services/org/apache/camel/other.properties b/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/META-INF/services/org/apache/camel/other.properties
new file mode 100644
index 0000000..b314671
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/META-INF/services/org/apache/camel/other.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+name=huaweicloud-dms
+groupId=org.apache.camel
+artifactId=camel-huaweicloud-dms
+version=3.12.0-SNAPSHOT
+projectName=Camel :: Huawei Cloud :: DMS Component
+projectDescription=To provide a fully managed, high-performance message queuing service
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/META-INF/services/org/apache/camel/urifactory/hwcloud-dms-endpoint b/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/META-INF/services/org/apache/camel/urifactory/hwcloud-dms-endpoint
new file mode 100644
index 0000000..3e8f08f
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/META-INF/services/org/apache/camel/urifactory/hwcloud-dms-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.huaweicloud.dms.DMSEndpointUriFactory
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/huaweicloud-dms.json b/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/huaweicloud-dms.json
new file mode 100644
index 0000000..6dafb28
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/huaweicloud-dms.json
@@ -0,0 +1,14 @@
+{
+  "other": {
+    "kind": "other",
+    "name": "huaweicloud-dms",
+    "title": "Huaweicloud Dms",
+    "description": "To provide a fully managed, high-performance message queuing service",
+    "deprecated": false,
+    "firstVersion": "3.12.0",
+    "supportLevel": "Preview",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-huaweicloud-dms",
+    "version": "3.12.0-SNAPSHOT"
+  }
+}
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/org/apache/camel/component/huaweicloud/dms/hwcloud-dms.json b/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/org/apache/camel/component/huaweicloud/dms/hwcloud-dms.json
new file mode 100644
index 0000000..14cec70
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/org/apache/camel/component/huaweicloud/dms/hwcloud-dms.json
@@ -0,0 +1,45 @@
+{
+  "component": {
+    "kind": "component",
+    "name": "hwcloud-dms",
+    "title": "Huawei Distributed Message Service (DMS)",
+    "description": "To integrate with a fully managed, high-performance message queuing service on Huawei Cloud",
+    "deprecated": false,
+    "firstVersion": "3.12.0",
+    "label": "cloud",
+    "javaType": "org.apache.camel.component.huaweicloud.dms.DMSComponent",
+    "supportLevel": "Preview",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-huaweicloud-dms",
+    "version": "3.12.0-SNAPSHOT",
+    "scheme": "hwcloud-dms",
+    "extendsScheme": "",
+    "syntax": "hwcloud-dms:operation",
+    "async": false,
+    "api": false,
+    "consumerOnly": false,
+    "producerOnly": true,
+    "lenientProperties": false
+  },
+  "componentProperties": {
+    "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during star [...]
+    "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 [...]
+  },
+  "properties": {
+    "operation": { "kind": "path", "displayName": "Operation", "group": "producer", "label": "producer", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Operation to be performed" },
+    "authenticationKey": { "kind": "parameter", "displayName": "API authentication key (AK)", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "description": "Authentication key for the cloud user" },
+    "endpoint": { "kind": "parameter", "displayName": "Service endpoint", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "DMS url. Carries higher precedence than region parameter based client initialization" },
+    "engine": { "kind": "parameter", "displayName": "Engine type", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "kafka", "rabbitmq" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The message engine. Either kafka or rabbitmq. If the parameter is not specified, all instances will be queried" },
+    "ignoreSslVerification": { "kind": "parameter", "displayName": "SSL Verification Ignored", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": false, "description": "Ignore SSL verification" },
+    "instanceId": { "kind": "parameter", "displayName": "Instance id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The id of the instance. This option is mandatory when querying an instance" },
+    "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during sta [...]
+    "projectId": { "kind": "parameter", "displayName": "Project ID", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Cloud project ID" },
+    "proxyHost": { "kind": "parameter", "displayName": "Proxy server host", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Proxy server ip\/hostname" },
+    "proxyPassword": { "kind": "parameter", "displayName": "Proxy password", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "description": "Proxy authentication password" },
+    "proxyPort": { "kind": "parameter", "displayName": "Proxy server port", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Proxy server port" },
+    "proxyUser": { "kind": "parameter", "displayName": "Proxy user", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "description": "Proxy authentication user" },
+    "region": { "kind": "parameter", "displayName": "Service region", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "DMS service region" },
+    "secretKey": { "kind": "parameter", "displayName": "API secret key (SK)", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "description": "Secret key for the cloud user" },
+    "serviceKeys": { "kind": "parameter", "displayName": "Service Configuration", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.huaweicloud.common.models.ServiceKeys", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "description": "Configuration object for cloud service authentication" }
+  }
+}
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/main/docs/hwcloud-dms-component.adoc b/components/camel-huawei/camel-huaweicloud-dms/src/main/docs/hwcloud-dms-component.adoc
new file mode 100644
index 0000000..be5f9ba
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/main/docs/hwcloud-dms-component.adoc
@@ -0,0 +1,176 @@
+[[hwcloud-dms-component]]
+= Huawei Distributed Message Service (DMS) Component
+:docTitle: Huawei Distributed Message Service (DMS)
+:artifactId: camel-huaweicloud-dms
+:description: To integrate with a fully managed, high-performance message queuing service on Huawei Cloud
+:since: 3.12
+:supportLevel: Preview
+:component-header: Only producer is supported
+include::{cq-version}@camel-quarkus:ROOT:partial$reference/components/hwcloud-dms.adoc[opts=optional]
+//Manually maintained attributes
+:group: Huawei Cloud
+
+*Since Camel {since}*
+
+*{component-header}*
+
+
+Huawei Cloud Distributed Message Service (DMS) component allows you to integrate with https://www.huaweicloud.com/intl/en-us/product/dms.html[DMS] provided by Huawei Cloud.
+
+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-huaweicloud-dms</artifactId>
+    <version>x.x.x</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+----
+
+== URI Format
+
+----
+hwcloud-dms:operation[?options]
+----
+
+// component-configure options: START
+== Configuring Options
+
+Camel components are configured on two separate levels:
+
+- component level
+- endpoint level
+
+=== Configuring Component Options
+
+The component level is the highest level which holds general and common configurations that are inherited by the endpoints.
+For example a component may have security settings, credentials for authentication, urls for network connection and so forth.
+
+Some components only have a few options, and others may have many. Because components typically have pre configured defaults
+that are commonly used, then you may often only need to configure a few options on a component; or none at all.
+
+Configuring components can be done with the xref:latest@manual::component-dsl.adoc[Component DSL],
+in a configuration file (application.properties|yaml), or directly with Java code.
+
+=== Configuring Endpoint Options
+
+Where you find yourself configuring the most is on endpoints, as endpoints often have many options, which allows you to
+configure what you need the endpoint to do. The options are also categorized into whether the endpoint is used as consumer (from)
+or as a producer (to), or used for both.
+
+Configuring endpoints is most often done directly in the endpoint URI as path and query parameters. You can also use
+the xref:latest@manual::Endpoint-dsl.adoc[Endpoint DSL] as a _type safe_ way of configuring endpoints.
+
+A good practice when configuring options is to use xref:latest@manual::using-propertyplaceholder.adoc[Property Placeholders],
+which allows to not hardcode urls, port numbers, sensitive information, and other settings.
+In other words placeholders allows to externalize the configuration from your code, and gives more flexibility and reuse.
+
+The following two sections lists all the options, firstly for the component followed by the endpoint.
+// component-configure options: END
+
+// component options: START
+== Component Options
+
+
+The Huawei Distributed Message Service (DMS) component supports 2 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
+| *autowiredEnabled* (advanced) | Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | boolean
+|===
+// component options: END
+
+// endpoint options: START
+== Endpoint Options
+
+The Huawei Distributed Message Service (DMS) endpoint is configured using URI syntax:
+
+----
+hwcloud-dms:operation
+----
+
+with the following path and query parameters:
+
+=== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *operation* | *Required* Operation to be performed |  | String
+|===
+
+
+=== Query Parameters (14 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *authenticationKey* (producer) | *Required* Authentication key for the cloud user |  | String
+| *endpoint* (producer) | DMS url. Carries higher precedence than region parameter based client initialization |  | String
+| *engine* (producer) | The message engine. Either kafka or rabbitmq. If the parameter is not specified, all instances will be queried. There are 2 enums and the value can be one of: kafka, rabbitmq |  | String
+| *ignoreSslVerification* (producer) | Ignore SSL verification | false | boolean
+| *instanceId* (producer) | The id of the instance. This option is mandatory when querying an instance |  | String
+| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
+| *projectId* (producer) | *Required* Cloud project ID |  | String
+| *proxyHost* (producer) | Proxy server ip/hostname |  | String
+| *proxyPassword* (producer) | Proxy authentication password |  | String
+| *proxyPort* (producer) | Proxy server port |  | int
+| *proxyUser* (producer) | Proxy authentication user |  | String
+| *region* (producer) | *Required* DMS service region |  | String
+| *secretKey* (producer) | *Required* Secret key for the cloud user |  | String
+| *serviceKeys* (producer) | Configuration object for cloud service authentication |  | ServiceKeys
+|===
+// endpoint options: END
+
+
+== Usage
+
+=== Message properties evaluated by the DMS producer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelHwCloudDmsOperation` |`String` | Name of operation to invoke
+
+|`CamelHwCloudDmsEngine` |`String` | The message engine. Either kafka or rabbitmq
+
+|`CamelHwCloudDmsInstanceId` |`String` | Instance ID to invoke operation on
+
+|=======================================================================
+
+If any of the above properties are set, they will override their corresponding query parameter.
+
+== List of Supported DMS Operations
+
+- listInstances
+- queryInstance
+
+== Using ServiceKey Configuration Bean
+
+Authentication key and secret keys are required to authenticate against cloud DMS service. You can avoid having them being exposed
+and scattered over in your endpoint uri by wrapping them inside a bean of class `org.apache.camel.component.huaweicloud.common.models.ServiceKeys`.
+Add it to the registry and let Camel look it up by referring the object via endpoint query parameter `serviceKeys`.
+
+Check the following code snippets:
+
+[source,xml]
+----
+<bean id="myServiceKeyConfig" class="org.apache.camel.component.huaweicloud.common.models.ServiceKeys">
+   <property name="authenticationKey" value="your_authentication_key" />
+   <property name="secretKey" value="your_secret_key" />
+</bean>
+----
+[source,java]
+----
+from("direct:triggerRoute")
+ .to("hwcloud-dms:listInstances?region=cn-north-4&serviceKeys=#myServiceKeyConfig")
+----
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DMSComponent.java b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DMSComponent.java
new file mode 100644
index 0000000..f8bcd30
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DMSComponent.java
@@ -0,0 +1,32 @@
+/*
+ * 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.huaweicloud.dms;
+
+import java.util.Map;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.support.DefaultComponent;
+
+@org.apache.camel.spi.annotations.Component("hwcloud-dms")
+public class DMSComponent extends DefaultComponent {
+
+    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
+        Endpoint endpoint = new DMSEndpoint(uri, remaining, this);
+        setProperties(endpoint, parameters);
+        return endpoint;
+    }
+}
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DMSEndpoint.java b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DMSEndpoint.java
new file mode 100644
index 0000000..e322ede
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DMSEndpoint.java
@@ -0,0 +1,295 @@
+/*
+ * 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.huaweicloud.dms;
+
+import com.huaweicloud.sdk.core.auth.BasicCredentials;
+import com.huaweicloud.sdk.core.http.HttpConfig;
+import org.apache.camel.Category;
+import org.apache.camel.Consumer;
+import org.apache.camel.Processor;
+import org.apache.camel.Producer;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.dms.models.DmsRegion;
+import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriPath;
+import org.apache.camel.support.DefaultEndpoint;
+import org.apache.camel.util.ObjectHelper;
+
+/**
+ * To integrate with a fully managed, high-performance message queuing service on Huawei Cloud
+ */
+@UriEndpoint(firstVersion = "3.12.0", scheme = "hwcloud-dms", title = "Huawei Distributed Message Service (DMS)",
+             syntax = "hwcloud-dms:operation",
+             category = { Category.CLOUD }, producerOnly = true)
+public class DMSEndpoint extends DefaultEndpoint {
+
+    @UriPath(description = "Operation to be performed", displayName = "Operation", label = "producer")
+    @Metadata(required = true)
+    private String operation;
+
+    @UriParam(description = "DMS service region", displayName = "Service region")
+    @Metadata(required = true)
+    private String region;
+
+    @UriParam(description = "DMS url. Carries higher precedence than region parameter based client initialization",
+              displayName = "Service endpoint", secret = false)
+    @Metadata(required = false)
+    private String endpoint;
+
+    @UriParam(description = "Cloud project ID", displayName = "Project ID")
+    @Metadata(required = true)
+    private String projectId;
+
+    @UriParam(description = "Proxy server ip/hostname", displayName = "Proxy server host")
+    @Metadata(required = false)
+    private String proxyHost;
+
+    @UriParam(description = "Proxy server port", displayName = "Proxy server port")
+    @Metadata(required = false)
+    private int proxyPort;
+
+    @UriParam(description = "Proxy authentication user", displayName = "Proxy user", secret = true)
+    @Metadata(required = false)
+    private String proxyUser;
+
+    @UriParam(description = "Proxy authentication password", displayName = "Proxy password", secret = true)
+    @Metadata(required = false)
+    private String proxyPassword;
+
+    @UriParam(description = "Ignore SSL verification", displayName = "SSL Verification Ignored", defaultValue = "false")
+    @Metadata(required = false)
+    private boolean ignoreSslVerification;
+
+    @UriParam(description = "Configuration object for cloud service authentication", displayName = "Service Configuration",
+              secret = true)
+    @Metadata(required = false)
+    private ServiceKeys serviceKeys;
+
+    @UriParam(description = "Authentication key for the cloud user", displayName = "API authentication key (AK)", secret = true)
+    @Metadata(required = true)
+    private String authenticationKey;
+
+    @UriParam(description = "Secret key for the cloud user", displayName = "API secret key (SK)", secret = true)
+    @Metadata(required = true)
+    private String secretKey;
+
+    @UriParam(description = "The message engine. Either kafka or rabbitmq. If the parameter is not specified, all instances will be queried",
+              displayName = "Engine type",
+              enums = "kafka,rabbitmq")
+    @Metadata(required = false)
+    private String engine;
+
+    @UriParam(description = "The id of the instance. This option is mandatory when querying an instance",
+              displayName = "Instance id")
+    @Metadata(required = false)
+    private String instanceId;
+
+    private DmsClient dmsClient;
+
+    public DMSEndpoint() {
+    }
+
+    public DMSEndpoint(String uri, String operation, DMSComponent component) {
+        super(uri, component);
+        this.operation = operation;
+    }
+
+    public Producer createProducer() throws Exception {
+        return new DMSProducer(this);
+    }
+
+    public Consumer createConsumer(Processor processor) throws Exception {
+        throw new UnsupportedOperationException("You cannot receive messages from this endpoint");
+    }
+
+    public String getOperation() {
+        return operation;
+    }
+
+    public void setOperation(String operation) {
+        this.operation = operation;
+    }
+
+    public String getRegion() {
+        return region;
+    }
+
+    public void setRegion(String region) {
+        this.region = region;
+    }
+
+    public String getEndpoint() {
+        return endpoint;
+    }
+
+    public void setEndpoint(String endpoint) {
+        this.endpoint = endpoint;
+    }
+
+    public String getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(String projectId) {
+        this.projectId = projectId;
+    }
+
+    public String getProxyHost() {
+        return proxyHost;
+    }
+
+    public void setProxyHost(String proxyHost) {
+        this.proxyHost = proxyHost;
+    }
+
+    public int getProxyPort() {
+        return proxyPort;
+    }
+
+    public void setProxyPort(int proxyPort) {
+        this.proxyPort = proxyPort;
+    }
+
+    public String getProxyUser() {
+        return proxyUser;
+    }
+
+    public void setProxyUser(String proxyUser) {
+        this.proxyUser = proxyUser;
+    }
+
+    public String getProxyPassword() {
+        return proxyPassword;
+    }
+
+    public void setProxyPassword(String proxyPassword) {
+        this.proxyPassword = proxyPassword;
+    }
+
+    public boolean isIgnoreSslVerification() {
+        return ignoreSslVerification;
+    }
+
+    public void setIgnoreSslVerification(boolean ignoreSslVerification) {
+        this.ignoreSslVerification = ignoreSslVerification;
+    }
+
+    public ServiceKeys getServiceKeys() {
+        return serviceKeys;
+    }
+
+    public void setServiceKeys(ServiceKeys serviceKeys) {
+        this.serviceKeys = serviceKeys;
+    }
+
+    public String getAuthenticationKey() {
+        return authenticationKey;
+    }
+
+    public void setAuthenticationKey(String authenticationKey) {
+        this.authenticationKey = authenticationKey;
+    }
+
+    public String getSecretKey() {
+        return secretKey;
+    }
+
+    public void setSecretKey(String secretKey) {
+        this.secretKey = secretKey;
+    }
+
+    public String getEngine() {
+        return engine;
+    }
+
+    public void setEngine(String engine) {
+        this.engine = engine;
+    }
+
+    public String getInstanceId() {
+        return instanceId;
+    }
+
+    public void setInstanceId(String instanceId) {
+        this.instanceId = instanceId;
+    }
+
+    public DmsClient getDmsClient() {
+        return dmsClient;
+    }
+
+    public void setDmsClient(DmsClient dmsClient) {
+        this.dmsClient = dmsClient;
+    }
+
+    public DmsClient initClient() {
+        if (dmsClient != null) {
+            return dmsClient;
+        }
+
+        // check for mandatory AK/SK in ServiceKeys object or in endpoint
+        if (ObjectHelper.isEmpty(getServiceKeys()) && ObjectHelper.isEmpty(getAuthenticationKey())) {
+            throw new IllegalArgumentException("Authentication parameter 'authentication key (AK)' not found");
+        }
+        if (ObjectHelper.isEmpty(getServiceKeys()) && ObjectHelper.isEmpty(getSecretKey())) {
+            throw new IllegalArgumentException("Authentication parameter 'secret key (SK)' not found");
+        }
+
+        // setup AK/SK credential information. AK/SK provided through ServiceKeys overrides the AK/SK passed through the endpoint
+        BasicCredentials auth = new BasicCredentials()
+                .withAk(getServiceKeys() != null
+                        ? getServiceKeys().getAuthenticationKey()
+                        : getAuthenticationKey())
+                .withSk(getServiceKeys() != null
+                        ? getServiceKeys().getSecretKey()
+                        : getSecretKey())
+                .withProjectId(getProjectId());
+
+        // setup http information (including proxy information if provided)
+        HttpConfig httpConfig = HttpConfig.getDefaultHttpConfig();
+        httpConfig.withIgnoreSSLVerification(isIgnoreSslVerification());
+        if (ObjectHelper.isNotEmpty(getProxyHost())
+                && ObjectHelper.isNotEmpty(getProxyPort())) {
+            httpConfig.withProxyHost(getProxyHost())
+                    .withProxyPort(getProxyPort());
+
+            if (ObjectHelper.isNotEmpty(getProxyUser())) {
+                httpConfig.withProxyUsername(getProxyUser());
+                if (ObjectHelper.isNotEmpty(getProxyPassword())) {
+                    httpConfig.withProxyPassword(getProxyPassword());
+                }
+            }
+        }
+
+        // Build DmsClient with mandatory region parameter.
+        if (ObjectHelper.isNotEmpty(getEndpoint())) {
+            return DmsClient.newBuilder()
+                    .withCredential(auth)
+                    .withHttpConfig(httpConfig)
+                    .withEndpoint(getEndpoint())
+                    .build();
+        } else {
+            return DmsClient.newBuilder()
+                    .withCredential(auth)
+                    .withHttpConfig(httpConfig)
+                    .withRegion(DmsRegion.valueOf(getRegion()))
+                    .build();
+        }
+    }
+}
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DMSProducer.java b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DMSProducer.java
new file mode 100644
index 0000000..aeee772
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DMSProducer.java
@@ -0,0 +1,146 @@
+/*
+ * 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.huaweicloud.dms;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.camel.Exchange;
+import org.apache.camel.component.huaweicloud.dms.constants.DMSOperations;
+import org.apache.camel.component.huaweicloud.dms.constants.DMSProperties;
+import org.apache.camel.component.huaweicloud.dms.models.ClientConfigurations;
+import org.apache.camel.component.huaweicloud.dms.models.DmsInstance;
+import org.apache.camel.component.huaweicloud.dms.models.ListInstancesRequest;
+import org.apache.camel.component.huaweicloud.dms.models.ListInstancesResponse;
+import org.apache.camel.component.huaweicloud.dms.models.QueryInstanceRequest;
+import org.apache.camel.support.DefaultProducer;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DMSProducer extends DefaultProducer {
+    private static final Logger LOG = LoggerFactory.getLogger(DMSProducer.class);
+    private DMSEndpoint endpoint;
+    private ClientConfigurations clientConfigurations;
+    private DmsClient dmsClient;
+    private ObjectMapper mapper;
+
+    public DMSProducer(DMSEndpoint endpoint) {
+        super(endpoint);
+        this.endpoint = endpoint;
+    }
+
+    @Override
+    protected void doStart() throws Exception {
+        super.doStart();
+        this.clientConfigurations = new ClientConfigurations();
+        this.dmsClient = this.endpoint.initClient();
+        this.mapper = new ObjectMapper();
+    }
+
+    public void process(Exchange exchange) throws Exception {
+        updateClientConfigs(exchange);
+
+        switch (clientConfigurations.getOperation()) {
+            case DMSOperations.LIST_INSTANCES:
+                listInstances(exchange);
+                break;
+            case DMSOperations.QUERY_INSTANCE:
+                queryInstance(exchange);
+                break;
+            default:
+                throw new UnsupportedOperationException(
+                        String.format("%s is not a supported operation", clientConfigurations.getOperation()));
+        }
+    }
+
+    /**
+     * Perform list instances operation
+     *
+     * @param exchange
+     */
+    private void listInstances(Exchange exchange) throws JsonProcessingException {
+        ListInstancesRequest request = new ListInstancesRequest()
+                .withEngine(clientConfigurations.getEngine());
+        ListInstancesResponse response = dmsClient.listInstances(request);
+        exchange.getMessage().setBody(mapper.writeValueAsString(response.getInstances()));
+    }
+
+    /**
+     * Perform query instance operation
+     *
+     * @param exchange
+     */
+    private void queryInstance(Exchange exchange) throws JsonProcessingException {
+        // check for instance id, which is mandatory to query an instance
+        if (ObjectHelper.isEmpty(clientConfigurations.getInstanceId())) {
+            throw new IllegalArgumentException("Instance id is mandatory to query an instance");
+        }
+
+        QueryInstanceRequest request = new QueryInstanceRequest()
+                .withInstanceId(clientConfigurations.getInstanceId());
+        DmsInstance response = dmsClient.queryInstance(request);
+        exchange.getMessage().setBody(mapper.writeValueAsString(response));
+    }
+
+    /**
+     * Update dynamic client configurations. Some endpoint parameters (operation, user ID, and group ID) can also be
+     * passed via exchange properties, so they can be updated between each transaction. Since they can change, we must
+     * clear the previous transaction and update these parameters with their new values
+     *
+     * @param exchange
+     */
+    private void updateClientConfigs(Exchange exchange) {
+        resetDynamicConfigs();
+
+        // checking for required operation (exchange overrides endpoint operation if both are provided)
+        if (ObjectHelper.isEmpty(exchange.getProperty(DMSProperties.OPERATION))
+                && ObjectHelper.isEmpty(endpoint.getOperation())) {
+            if (LOG.isErrorEnabled()) {
+                LOG.error("No operation name given. Cannot proceed with DMS operations.");
+            }
+            throw new IllegalArgumentException("Operation name not found");
+        } else {
+            clientConfigurations.setOperation(
+                    ObjectHelper.isNotEmpty(exchange.getProperty(DMSProperties.OPERATION))
+                            ? (String) exchange.getProperty(DMSProperties.OPERATION)
+                            : endpoint.getOperation());
+        }
+
+        // checking for optional values (exchange overrides endpoint value if both are provided)
+
+        // checking for engine
+        clientConfigurations.setEngine(
+                ObjectHelper.isNotEmpty(exchange.getProperty(DMSProperties.ENGINE))
+                        ? (String) exchange.getProperty(DMSProperties.ENGINE)
+                        : endpoint.getEngine());
+
+        // checking for instance id
+        clientConfigurations.setInstanceId(
+                ObjectHelper.isNotEmpty(exchange.getProperty(DMSProperties.INSTANCE_ID))
+                        ? (String) exchange.getProperty(DMSProperties.INSTANCE_ID)
+                        : endpoint.getInstanceId());
+    }
+
+    /**
+     * Set all dynamic configurations to null
+     */
+    private void resetDynamicConfigs() {
+        clientConfigurations.setOperation(null);
+        clientConfigurations.setEngine(null);
+        clientConfigurations.setInstanceId(null);
+    }
+}
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DmsClient.java b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DmsClient.java
new file mode 100644
index 0000000..bb2586f
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DmsClient.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.huaweicloud.dms;
+
+import com.huaweicloud.sdk.core.ClientBuilder;
+import com.huaweicloud.sdk.core.HcClient;
+import org.apache.camel.component.huaweicloud.dms.models.DmsInstance;
+import org.apache.camel.component.huaweicloud.dms.models.ListInstancesRequest;
+import org.apache.camel.component.huaweicloud.dms.models.ListInstancesResponse;
+import org.apache.camel.component.huaweicloud.dms.models.QueryInstanceRequest;
+
+/**
+ * DMS Client class
+ */
+public class DmsClient {
+
+    protected HcClient hcClient;
+
+    public DmsClient(HcClient hcClient) {
+        this.hcClient = hcClient;
+    }
+
+    public static ClientBuilder<DmsClient> newBuilder() {
+        return new ClientBuilder<>(DmsClient::new);
+    }
+
+    public ListInstancesResponse listInstances(ListInstancesRequest request) {
+        return hcClient.syncInvokeHttp(request, DmsMeta.LIST_INSTANCES);
+    }
+
+    public DmsInstance queryInstance(QueryInstanceRequest request) {
+        return hcClient.syncInvokeHttp(request, DmsMeta.QUERY_INSTANCE);
+    }
+}
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DmsMeta.java b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DmsMeta.java
new file mode 100644
index 0000000..ab7897d
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DmsMeta.java
@@ -0,0 +1,73 @@
+/*
+ * 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.huaweicloud.dms;
+
+import com.huaweicloud.sdk.core.http.FieldExistence;
+import com.huaweicloud.sdk.core.http.HttpMethod;
+import com.huaweicloud.sdk.core.http.HttpRequestDef;
+import com.huaweicloud.sdk.core.http.LocationType;
+import org.apache.camel.component.huaweicloud.dms.models.DmsInstance;
+import org.apache.camel.component.huaweicloud.dms.models.ListInstancesRequest;
+import org.apache.camel.component.huaweicloud.dms.models.ListInstancesResponse;
+import org.apache.camel.component.huaweicloud.dms.models.QueryInstanceRequest;
+
+@SuppressWarnings("unchecked")
+public final class DmsMeta {
+
+    public static final HttpRequestDef<ListInstancesRequest, ListInstancesResponse> LIST_INSTANCES = genForlistInstances();
+
+    public static final HttpRequestDef<QueryInstanceRequest, DmsInstance> QUERY_INSTANCE = genForqueryInstance();
+
+    private DmsMeta() {
+    }
+
+    private static HttpRequestDef<ListInstancesRequest, ListInstancesResponse> genForlistInstances() {
+        // basic
+        HttpRequestDef.Builder<ListInstancesRequest, ListInstancesResponse> builder
+                = HttpRequestDef.builder(HttpMethod.GET, ListInstancesRequest.class, ListInstancesResponse.class)
+                        .withName("ListInstances")
+                        .withUri("/v1.0/{project_id}/instances")
+                        .withContentType("application/json");
+
+        // requests
+        builder.withRequestField("engine",
+                LocationType.Query,
+                FieldExistence.NULL_IGNORE,
+                String.class,
+                f -> f.withMarshaller(ListInstancesRequest::getEngine, ListInstancesRequest::setEngine));
+
+        return builder.build();
+    }
+
+    private static HttpRequestDef<QueryInstanceRequest, DmsInstance> genForqueryInstance() {
+        // basic
+        HttpRequestDef.Builder<QueryInstanceRequest, DmsInstance> builder
+                = HttpRequestDef.builder(HttpMethod.GET, QueryInstanceRequest.class, DmsInstance.class)
+                        .withName("QueryInstance")
+                        .withUri("/v1.0/{project_id}/instances/{instance_id}")
+                        .withContentType("application/json");
+
+        // requests
+        builder.withRequestField("instance_id",
+                LocationType.Path,
+                FieldExistence.NON_NULL_NON_EMPTY,
+                String.class,
+                f -> f.withMarshaller(QueryInstanceRequest::getInstanceId, QueryInstanceRequest::setInstanceId));
+
+        return builder.build();
+    }
+}
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/constants/DMSOperations.java b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/constants/DMSOperations.java
new file mode 100644
index 0000000..1bbb406
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/constants/DMSOperations.java
@@ -0,0 +1,28 @@
+/*
+ * 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.huaweicloud.dms.constants;
+
+/**
+ * Constants for all the supported DMS operations
+ */
+public final class DMSOperations {
+    public static final String LIST_INSTANCES = "listInstances";
+    public static final String QUERY_INSTANCE = "queryInstance";
+
+    private DMSOperations() {
+    }
+}
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/constants/DMSProperties.java b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/constants/DMSProperties.java
new file mode 100644
index 0000000..6ae8661
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/constants/DMSProperties.java
@@ -0,0 +1,29 @@
+/*
+ * 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.huaweicloud.dms.constants;
+
+/**
+ * Constants for properties set on the exchange object
+ */
+public final class DMSProperties {
+    public static final String OPERATION = "CamelHwCloudDmsOperation";
+    public static final String ENGINE = "CamelHwCloudDmsEngine";
+    public static final String INSTANCE_ID = "CamelHwCloudDmsInstanceId";
+
+    private DMSProperties() {
+    }
+}
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/models/ClientConfigurations.java b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/models/ClientConfigurations.java
new file mode 100644
index 0000000..79ae690
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/models/ClientConfigurations.java
@@ -0,0 +1,55 @@
+/*
+ * 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.huaweicloud.dms.models;
+
+/**
+ * Class to combine parameters which can be passed through exchange properties and endpoint parameters to avoid checking
+ * both each time they are used
+ */
+public class ClientConfigurations {
+    private String operation;
+    private String engine;
+    private String instanceId;
+
+    public ClientConfigurations() {
+    }
+
+    public String getOperation() {
+        return operation;
+    }
+
+    public void setOperation(String operation) {
+        this.operation = operation;
+    }
+
+    public String getEngine() {
+        return engine;
+    }
+
+    public void setEngine(String engine) {
+        this.engine = engine;
+    }
+
+    public String getInstanceId() {
+        return instanceId;
+    }
+
+    public void setInstanceId(String instanceId) {
+        this.instanceId = instanceId;
+    }
+
+}
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/models/DmsInstance.java b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/models/DmsInstance.java
new file mode 100644
index 0000000..9d06f27
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/models/DmsInstance.java
@@ -0,0 +1,782 @@
+/*
+ * 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.huaweicloud.dms.models;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.huaweicloud.sdk.core.SdkResponse;
+
+/**
+ * DMS instance object
+ */
+public class DmsInstance extends SdkResponse {
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "name")
+    private String name;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "engine")
+    private String engine;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "engine_version")
+    private String engineVersion;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "specification")
+    private String specification;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "storage_space")
+    private int storageSpace;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "partition_num")
+    private int partitionNum;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "used_storage_space")
+    private int usedStorageSpace;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "connect_address")
+    private String connectAddress;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "port")
+    private int port;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "status")
+    private String status;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "description")
+    private String description;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "instance_id")
+    private String instanceId;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "resource_spec_code")
+    private String resourceSpecCode;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "type")
+    private String type;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "charging_mode")
+    private int chargingMode;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "vpc_id")
+    private String vpcId;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "vpc_name")
+    private String vpcName;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "created_at")
+    private String createdAt;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "error_code")
+    private String errorCode;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "product_id")
+    private String productId;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "security_group_id")
+    private String securityGroupId;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "security_group_name")
+    private String securityGroupName;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "subnet_id")
+    private String subnetId;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "subnet_name")
+    private String subnetName;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "subnet_cidr")
+    private String subnetCidr;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "available_zones")
+    private List<String> availableZones;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "user_id")
+    private String userId;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "user_name")
+    private String userName;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "access_user")
+    private String accessUser;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "order_id")
+    private String orderId;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "maintain_begin")
+    private String maintainBegin;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "maintain_end")
+    private String maintainEnd;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "enable_publicip")
+    private boolean enablePublicip;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "publicip_address")
+    private String publicipAddress;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "publicip_id")
+    private String publicipId;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "management_connect_address")
+    private String managementConnectAddress;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "ssl_enable")
+    private boolean sslEnable;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "enterprise_project_id")
+    private String enterpriseProjectId;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "is_logical_volume")
+    private boolean logicalVolume;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "extend_times")
+    private int extendTimes;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "enable_auto_topic")
+    private boolean enableAutoTopic;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getEngine() {
+        return engine;
+    }
+
+    public void setEngine(String engine) {
+        this.engine = engine;
+    }
+
+    public String getEngineVersion() {
+        return engineVersion;
+    }
+
+    public void setEngineVersion(String engineVersion) {
+        this.engineVersion = engineVersion;
+    }
+
+    public String getSpecification() {
+        return specification;
+    }
+
+    public void setSpecification(String specification) {
+        this.specification = specification;
+    }
+
+    public int getStorageSpace() {
+        return storageSpace;
+    }
+
+    public void setStorageSpace(int storageSpace) {
+        this.storageSpace = storageSpace;
+    }
+
+    public int getPartitionNum() {
+        return partitionNum;
+    }
+
+    public void setPartitionNum(int partitionNum) {
+        this.partitionNum = partitionNum;
+    }
+
+    public int getUsedStorageSpace() {
+        return usedStorageSpace;
+    }
+
+    public void setUsedStorageSpace(int usedStorageSpace) {
+        this.usedStorageSpace = usedStorageSpace;
+    }
+
+    public String getConnectAddress() {
+        return connectAddress;
+    }
+
+    public void setConnectAddress(String connectAddress) {
+        this.connectAddress = connectAddress;
+    }
+
+    public int getPort() {
+        return port;
+    }
+
+    public void setPort(int port) {
+        this.port = port;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getInstanceId() {
+        return instanceId;
+    }
+
+    public void setInstanceId(String instanceId) {
+        this.instanceId = instanceId;
+    }
+
+    public String getResourceSpecCode() {
+        return resourceSpecCode;
+    }
+
+    public void setResourceSpecCode(String resourceSpecCode) {
+        this.resourceSpecCode = resourceSpecCode;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public int getChargingMode() {
+        return chargingMode;
+    }
+
+    public void setChargingMode(int chargingMode) {
+        this.chargingMode = chargingMode;
+    }
+
+    public String getVpcId() {
+        return vpcId;
+    }
+
+    public void setVpcId(String vpcId) {
+        this.vpcId = vpcId;
+    }
+
+    public String getVpcName() {
+        return vpcName;
+    }
+
+    public void setVpcName(String vpcName) {
+        this.vpcName = vpcName;
+    }
+
+    public String getCreatedAt() {
+        return createdAt;
+    }
+
+    public void setCreatedAt(String createdAt) {
+        this.createdAt = createdAt;
+    }
+
+    public String getErrorCode() {
+        return errorCode;
+    }
+
+    public void setErrorCode(String errorCode) {
+        this.errorCode = errorCode;
+    }
+
+    public String getProductId() {
+        return productId;
+    }
+
+    public void setProductId(String productId) {
+        this.productId = productId;
+    }
+
+    public String getSecurityGroupId() {
+        return securityGroupId;
+    }
+
+    public void setSecurityGroupId(String securityGroupId) {
+        this.securityGroupId = securityGroupId;
+    }
+
+    public String getSecurityGroupName() {
+        return securityGroupName;
+    }
+
+    public void setSecurityGroupName(String securityGroupName) {
+        this.securityGroupName = securityGroupName;
+    }
+
+    public String getSubnetId() {
+        return subnetId;
+    }
+
+    public void setSubnetId(String subnetId) {
+        this.subnetId = subnetId;
+    }
+
+    public String getSubnetName() {
+        return subnetName;
+    }
+
+    public void setSubnetName(String subnetName) {
+        this.subnetName = subnetName;
+    }
+
+    public String getSubnetCidr() {
+        return subnetCidr;
+    }
+
+    public void setSubnetCidr(String subnetCidr) {
+        this.subnetCidr = subnetCidr;
+    }
+
+    public DmsInstance addAvailableZone(String availableZone) {
+        if (this.availableZones == null) {
+            this.availableZones = new ArrayList<>();
+        }
+        this.availableZones.add(availableZone);
+        return this;
+    }
+
+    public List<String> getAvailableZones() {
+        return availableZones;
+    }
+
+    public void setAvailableZones(List<String> availableZones) {
+        this.availableZones = availableZones;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getAccessUser() {
+        return accessUser;
+    }
+
+    public void setAccessUser(String accessUser) {
+        this.accessUser = accessUser;
+    }
+
+    public String getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(String orderId) {
+        this.orderId = orderId;
+    }
+
+    public String getMaintainBegin() {
+        return maintainBegin;
+    }
+
+    public void setMaintainBegin(String maintainBegin) {
+        this.maintainBegin = maintainBegin;
+    }
+
+    public String getMaintainEnd() {
+        return maintainEnd;
+    }
+
+    public void setMaintainEnd(String maintainEnd) {
+        this.maintainEnd = maintainEnd;
+    }
+
+    public boolean isEnablePublicip() {
+        return enablePublicip;
+    }
+
+    public void setEnablePublicip(boolean enablePublicip) {
+        this.enablePublicip = enablePublicip;
+    }
+
+    public String getPublicipAddress() {
+        return publicipAddress;
+    }
+
+    public void setPublicipAddress(String publicipAddress) {
+        this.publicipAddress = publicipAddress;
+    }
+
+    public String getPublicipId() {
+        return publicipId;
+    }
+
+    public void setPublicipId(String publicipId) {
+        this.publicipId = publicipId;
+    }
+
+    public String getManagementConnectAddress() {
+        return managementConnectAddress;
+    }
+
+    public void setManagementConnectAddress(String managementConnectAddress) {
+        this.managementConnectAddress = managementConnectAddress;
+    }
+
+    public boolean isSslEnable() {
+        return sslEnable;
+    }
+
+    public void setSslEnable(boolean sslEnable) {
+        this.sslEnable = sslEnable;
+    }
+
+    public String getEnterpriseProjectId() {
+        return enterpriseProjectId;
+    }
+
+    public void setEnterpriseProjectId(String enterpriseProjectId) {
+        this.enterpriseProjectId = enterpriseProjectId;
+    }
+
+    public boolean isLogicalVolume() {
+        return logicalVolume;
+    }
+
+    public void setLogicalVolume(boolean logicalVolume) {
+        this.logicalVolume = logicalVolume;
+    }
+
+    public int getExtendTimes() {
+        return extendTimes;
+    }
+
+    public void setExtendTimes(int extendTimes) {
+        this.extendTimes = extendTimes;
+    }
+
+    public boolean isEnableAutoTopic() {
+        return enableAutoTopic;
+    }
+
+    public void setEnableAutoTopic(boolean enableAutoTopic) {
+        this.enableAutoTopic = enableAutoTopic;
+    }
+
+    public DmsInstance withName(String name) {
+        this.name = name;
+        return this;
+    }
+
+    public DmsInstance withEngine(String engine) {
+        this.engine = engine;
+        return this;
+    }
+
+    public DmsInstance withEngineVersion(String engineVersion) {
+        this.engineVersion = engineVersion;
+        return this;
+    }
+
+    public DmsInstance withSpecification(String specification) {
+        this.specification = specification;
+        return this;
+    }
+
+    public DmsInstance withStorageSpace(int storageSpace) {
+        this.storageSpace = storageSpace;
+        return this;
+    }
+
+    public DmsInstance withPartitionNum(int partitionNum) {
+        this.partitionNum = partitionNum;
+        return this;
+    }
+
+    public DmsInstance withUsedStorageSpace(int usedStorageSpace) {
+        this.usedStorageSpace = usedStorageSpace;
+        return this;
+    }
+
+    public DmsInstance withConnectAddress(String connectAddress) {
+        this.connectAddress = connectAddress;
+        return this;
+    }
+
+    public DmsInstance withPort(int port) {
+        this.port = port;
+        return this;
+    }
+
+    public DmsInstance withStatus(String status) {
+        this.status = status;
+        return this;
+    }
+
+    public DmsInstance withDescription(String description) {
+        this.description = description;
+        return this;
+    }
+
+    public DmsInstance withInstanceId(String instanceId) {
+        this.instanceId = instanceId;
+        return this;
+    }
+
+    public DmsInstance withResourceSpecCode(String resourceSpecCode) {
+        this.resourceSpecCode = resourceSpecCode;
+        return this;
+    }
+
+    public DmsInstance withType(String type) {
+        this.type = type;
+        return this;
+    }
+
+    public DmsInstance withChargingMode(int chargingMode) {
+        this.chargingMode = chargingMode;
+        return this;
+    }
+
+    public DmsInstance withVpcId(String vpcId) {
+        this.vpcId = vpcId;
+        return this;
+    }
+
+    public DmsInstance withVpcName(String vpcName) {
+        this.vpcName = vpcName;
+        return this;
+    }
+
+    public DmsInstance withCreatedAt(String createdAt) {
+        this.createdAt = createdAt;
+        return this;
+    }
+
+    public DmsInstance withErrorCode(String errorCode) {
+        this.errorCode = errorCode;
+        return this;
+    }
+
+    public DmsInstance withProductId(String productId) {
+        this.productId = productId;
+        return this;
+    }
+
+    public DmsInstance withSecurityGroupId(String securityGroupId) {
+        this.securityGroupId = securityGroupId;
+        return this;
+    }
+
+    public DmsInstance withSecurityGroupName(String securityGroupName) {
+        this.securityGroupName = securityGroupName;
+        return this;
+    }
+
+    public DmsInstance withSubnetId(String subnetId) {
+        this.subnetId = subnetId;
+        return this;
+    }
+
+    public DmsInstance withSubnetName(String subnetName) {
+        this.subnetName = subnetName;
+        return this;
+    }
+
+    public DmsInstance withSubnetCidr(String subnetCidr) {
+        this.subnetCidr = subnetCidr;
+        return this;
+    }
+
+    public DmsInstance withAvailableZones(List<String> availableZones) {
+        this.availableZones = availableZones;
+        return this;
+    }
+
+    public DmsInstance withUserId(String userId) {
+        this.userId = userId;
+        return this;
+    }
+
+    public DmsInstance withUserName(String userName) {
+        this.userName = userName;
+        return this;
+    }
+
+    public DmsInstance withAccessUser(String accessUser) {
+        this.accessUser = accessUser;
+        return this;
+    }
+
+    public DmsInstance withOrderId(String orderId) {
+        this.orderId = orderId;
+        return this;
+    }
+
+    public DmsInstance withMaintainBegin(String maintainBegin) {
+        this.maintainBegin = maintainBegin;
+        return this;
+    }
+
+    public DmsInstance withMaintainEnd(String maintainEnd) {
+        this.maintainEnd = maintainEnd;
+        return this;
+    }
+
+    public DmsInstance withEnablePublicip(boolean enablePublicip) {
+        this.enablePublicip = enablePublicip;
+        return this;
+    }
+
+    public DmsInstance withPublicipAddress(String publicipAddress) {
+        this.publicipAddress = publicipAddress;
+        return this;
+    }
+
+    public DmsInstance withPublicipId(String publicipId) {
+        this.publicipId = publicipId;
+        return this;
+    }
+
+    public DmsInstance withManagementConnectAddress(String managementConnectAddress) {
+        this.managementConnectAddress = managementConnectAddress;
+        return this;
+    }
+
+    public DmsInstance withSslEnable(boolean sslEnable) {
+        this.sslEnable = sslEnable;
+        return this;
+    }
+
+    public DmsInstance withEnterpriseProjectId(String enterpriseProjectId) {
+        this.enterpriseProjectId = enterpriseProjectId;
+        return this;
+    }
+
+    public DmsInstance withLogicalVolume(boolean logicalVolume) {
+        this.logicalVolume = logicalVolume;
+        return this;
+    }
+
+    public DmsInstance withExtendTimes(int extendTimes) {
+        this.extendTimes = extendTimes;
+        return this;
+    }
+
+    public DmsInstance withEnableAutoTopic(boolean enableAutoTopic) {
+        this.enableAutoTopic = enableAutoTopic;
+        return this;
+    }
+
+    @Override
+    public String toString() {
+        return "DmsInstance{" +
+               "name='" + name + '\'' +
+               ", engine='" + engine + '\'' +
+               ", engineVersion='" + engineVersion + '\'' +
+               ", specification='" + specification + '\'' +
+               ", storageSpace=" + storageSpace +
+               ", partitionNum=" + partitionNum +
+               ", usedStorageSpace=" + usedStorageSpace +
+               ", connectAddress='" + connectAddress + '\'' +
+               ", port=" + port +
+               ", status='" + status + '\'' +
+               ", description='" + description + '\'' +
+               ", instanceId='" + instanceId + '\'' +
+               ", resourceSpecCode='" + resourceSpecCode + '\'' +
+               ", type='" + type + '\'' +
+               ", chargingMode=" + chargingMode +
+               ", vpcId='" + vpcId + '\'' +
+               ", vpcName='" + vpcName + '\'' +
+               ", createdAt='" + createdAt + '\'' +
+               ", errorCode='" + errorCode + '\'' +
+               ", productId='" + productId + '\'' +
+               ", securityGroupId='" + securityGroupId + '\'' +
+               ", securityGroupName='" + securityGroupName + '\'' +
+               ", subnetId='" + subnetId + '\'' +
+               ", subnetName='" + subnetName + '\'' +
+               ", subnetCidr='" + subnetCidr + '\'' +
+               ", availableZones=" + availableZones +
+               ", userId='" + userId + '\'' +
+               ", userName='" + userName + '\'' +
+               ", accessUser='" + accessUser + '\'' +
+               ", orderId='" + orderId + '\'' +
+               ", maintainBegin='" + maintainBegin + '\'' +
+               ", maintainEnd='" + maintainEnd + '\'' +
+               ", enablePublicip=" + enablePublicip +
+               ", publicipAddress='" + publicipAddress + '\'' +
+               ", publicipId='" + publicipId + '\'' +
+               ", managementConnectAddress='" + managementConnectAddress + '\'' +
+               ", sslEnable=" + sslEnable +
+               ", enterpriseProjectId='" + enterpriseProjectId + '\'' +
+               ", logicalVolume=" + logicalVolume +
+               ", extendTimes=" + extendTimes +
+               ", enableAutoTopic=" + enableAutoTopic +
+               '}';
+    }
+}
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/models/DmsRegion.java b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/models/DmsRegion.java
new file mode 100644
index 0000000..803cee7
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/models/DmsRegion.java
@@ -0,0 +1,73 @@
+/*
+ * 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.huaweicloud.dms.models;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+import com.huaweicloud.sdk.core.region.Region;
+import com.huaweicloud.sdk.core.utils.StringUtils;
+
+/**
+ * Class containing Huawei Cloud OBS regions and endpoints
+ */
+public final class DmsRegion {
+    public static final Region AF_SOUTH_1 = new Region("af-south-1", "https://dms.af-south-1.myhuaweicloud.com");
+    public static final Region CN_NORTH_4 = new Region("cn-north-4", "https://dms.cn-north-4.myhuaweicloud.com");
+    public static final Region CN_NORTH_1 = new Region("cn-north-1", "https://dms.cn-north-1.myhuaweicloud.com");
+    public static final Region CN_EAST_2 = new Region("cn-east-2", "https://dms.cn-east-2.myhuaweicloud.com");
+    public static final Region CN_EAST_3 = new Region("cn-east-3", "https://dms.cn-east-3.myhuaweicloud.com");
+    public static final Region CN_SOUTH_1 = new Region("cn-south-1", "https://dms.cn-south-1.myhuaweicloud.com");
+    public static final Region CN_SOUTHWEST_2 = new Region("cn-southwest-2", "https://dms.cn-southwest-2.myhuaweicloud.com");
+    public static final Region AP_SOUTHEAST_2 = new Region("ap-southeast-2", "https://dms.ap-southeast-2.myhuaweicloud.com");
+    public static final Region AP_SOUTHEAST_1 = new Region("ap-southeast-1", "https://dms.ap-southeast-1.myhuaweicloud.com");
+    public static final Region AP_SOUTHEAST_3 = new Region("ap-southeast-3", "https://dms.ap-southeast-3.myhuaweicloud.com");
+    private static final Map<String, Region> STATIC_FIELDS = createStaticFields();
+
+    private DmsRegion() {
+    }
+
+    private static Map<String, Region> createStaticFields() {
+        Map<String, Region> map = new HashMap();
+        map.put("af-south-1", AF_SOUTH_1);
+        map.put("cn-north-4", CN_NORTH_4);
+        map.put("cn-north-1", CN_NORTH_1);
+        map.put("cn-east-2", CN_EAST_2);
+        map.put("cn-east-3", CN_EAST_3);
+        map.put("cn-south-1", CN_SOUTH_1);
+        map.put("cn-southwest-2", CN_SOUTHWEST_2);
+        map.put("ap-southeast-2", AP_SOUTHEAST_2);
+        map.put("ap-southeast-1", AP_SOUTHEAST_1);
+        map.put("ap-southeast-3", AP_SOUTHEAST_3);
+        return Collections.unmodifiableMap(map);
+    }
+
+    public static Region valueOf(String regionId) {
+        if (StringUtils.isEmpty(regionId)) {
+            throw new IllegalArgumentException("Unexpected empty parameter: regionId.");
+        } else {
+            Region result = (Region) STATIC_FIELDS.get(regionId);
+            if (Objects.nonNull(result)) {
+                return result;
+            } else {
+                throw new IllegalArgumentException("Unexpected regionId: " + regionId);
+            }
+        }
+    }
+}
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/models/ListInstancesRequest.java b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/models/ListInstancesRequest.java
new file mode 100644
index 0000000..f853e7b
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/models/ListInstancesRequest.java
@@ -0,0 +1,50 @@
+/*
+ * 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.huaweicloud.dms.models;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * List instances request object
+ */
+public class ListInstancesRequest {
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "engine")
+    private String engine;
+
+    public ListInstancesRequest withEngine(String engine) {
+        this.engine = engine;
+        return this;
+    }
+
+    public String getEngine() {
+        return engine;
+    }
+
+    public void setEngine(String engine) {
+        this.engine = engine;
+    }
+
+    @Override
+    public String toString() {
+        return "ListInstancesRequest{" +
+               "engine='" + engine + '\'' +
+               '}';
+    }
+}
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/models/ListInstancesResponse.java b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/models/ListInstancesResponse.java
new file mode 100644
index 0000000..933ce2f
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/models/ListInstancesResponse.java
@@ -0,0 +1,80 @@
+/*
+ * 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.huaweicloud.dms.models;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.huaweicloud.sdk.core.SdkResponse;
+
+/**
+ * List instances response object
+ */
+public class ListInstancesResponse extends SdkResponse {
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "instances")
+    private List<DmsInstance> instances;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "instance_num")
+    private int instanceNum;
+
+    public ListInstancesResponse withInstances(List<DmsInstance> instances) {
+        this.instances = instances;
+        return this;
+    }
+
+    public ListInstancesResponse addInstance(DmsInstance instance) {
+        if (this.instances == null) {
+            this.instances = new ArrayList<>();
+        }
+        this.instances.add(instance);
+        return this;
+    }
+
+    public List<DmsInstance> getInstances() {
+        return instances;
+    }
+
+    public void setInstances(List<DmsInstance> instances) {
+        this.instances = instances;
+    }
+
+    public ListInstancesResponse withInstanceNum(int instanceNum) {
+        this.instanceNum = instanceNum;
+        return this;
+    }
+
+    public int getInstanceNum() {
+        return instanceNum;
+    }
+
+    public void setInstanceNum(int instanceNum) {
+        this.instanceNum = instanceNum;
+    }
+
+    @Override
+    public String toString() {
+        return "ListInstancesResponse{" +
+               "instances=" + instances +
+               ", instanceNum=" + instanceNum +
+               '}';
+    }
+}
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/models/QueryInstanceRequest.java b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/models/QueryInstanceRequest.java
new file mode 100644
index 0000000..3dd3c2d
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/models/QueryInstanceRequest.java
@@ -0,0 +1,50 @@
+/*
+ * 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.huaweicloud.dms.models;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Query instance request object
+ */
+public class QueryInstanceRequest {
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty(value = "instance_id")
+    private String instanceId;
+
+    public QueryInstanceRequest withInstanceId(String instanceId) {
+        this.instanceId = instanceId;
+        return this;
+    }
+
+    public String getInstanceId() {
+        return instanceId;
+    }
+
+    public void setInstanceId(String instanceId) {
+        this.instanceId = instanceId;
+    }
+
+    @Override
+    public String toString() {
+        return "QueryInstanceRequest{" +
+               "instanceId='" + instanceId + '\'' +
+               '}';
+    }
+}
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/main/resources/META-INF/services/org/apache/camel/component/hwcloud-dms b/components/camel-huawei/camel-huaweicloud-dms/src/main/resources/META-INF/services/org/apache/camel/component/hwcloud-dms
new file mode 100644
index 0000000..af5c359
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/main/resources/META-INF/services/org/apache/camel/component/hwcloud-dms
@@ -0,0 +1 @@
+class=org.apache.camel.component.huaweicloud.dms.DMSComponent
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/test/java/org/apache/camel/component/huaweicloud/dms/ListInstancesTest.java b/components/camel-huawei/camel-huaweicloud-dms/src/test/java/org/apache/camel/component/huaweicloud/dms/ListInstancesTest.java
new file mode 100644
index 0000000..e87367f
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/test/java/org/apache/camel/component/huaweicloud/dms/ListInstancesTest.java
@@ -0,0 +1,107 @@
+/*
+ * 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.huaweicloud.dms;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.camel.BindToRegistry;
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.dms.models.DmsInstance;
+import org.apache.camel.component.huaweicloud.dms.models.ListInstancesRequest;
+import org.apache.camel.component.huaweicloud.dms.models.ListInstancesResponse;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+public class ListInstancesTest extends CamelTestSupport {
+    TestConfiguration testConfiguration = new TestConfiguration();
+
+    @BindToRegistry("dmsClient")
+    DmsClient mockClient = Mockito.mock(DmsClient.class);
+
+    @BindToRegistry("serviceKeys")
+    ServiceKeys serviceKeys = new ServiceKeys(
+            testConfiguration.getProperty("authenticationKey"),
+            testConfiguration.getProperty("secretKey"));
+
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("direct:operation")
+                        .to("hwcloud-dms:listInstances?" +
+                            "authenticationKey=" + testConfiguration.getProperty("authenticationKey") +
+                            "&secretKey=" + testConfiguration.getProperty("secretKey") +
+                            "&region=" + testConfiguration.getProperty("region") +
+                            "&engine=" + testConfiguration.getProperty("engine") +
+                            "&ignoreSslVerification=true" +
+                            "&dmsClient=#dmsClient")
+                        .log("Operation successful")
+                        .to("mock:operation_result");
+            }
+        };
+    }
+
+    @Test
+    public void testOperation() throws Exception {
+        List<DmsInstance> instances = new ArrayList<>();
+        DmsInstance instance1 = new DmsInstance()
+                .withName("test-instance-1")
+                .withEngine(testConfiguration.getProperty("engine"))
+                .withStorageSpace(500)
+                .withInstanceId("id-1")
+                .withVpcId("vpc-id-1")
+                .withUserName("user-1");
+        DmsInstance instance2 = new DmsInstance()
+                .withName("test-instance-2")
+                .withEngine(testConfiguration.getProperty("engine"))
+                .withStorageSpace(4932)
+                .withInstanceId("id-2")
+                .withVpcId("vpc-id-2")
+                .withUserName("user-2")
+                .withLogicalVolume(true);
+        instances.add(instance1);
+        instances.add(instance2);
+        ListInstancesResponse response = new ListInstancesResponse()
+                .withInstances(instances)
+                .withInstanceNum(2);
+        Mockito.when(mockClient.listInstances(Mockito.any(ListInstancesRequest.class))).thenReturn(response);
+
+        MockEndpoint mock = getMockEndpoint("mock:operation_result");
+        mock.expectedMinimumMessageCount(1);
+        template.sendBody("direct:operation", "sample_body");
+        Exchange responseExchange = mock.getExchanges().get(0);
+
+        mock.assertIsSatisfied();
+
+        assertEquals(
+                "[{\"name\":\"test-instance-1\",\"engine\":\"kafka\",\"storage_space\":500,\"partition_num\":0,\"used_storage_space\":0,\"port\":0,"
+                     +
+                     "\"instance_id\":\"id-1\",\"charging_mode\":0,\"vpc_id\":\"vpc-id-1\",\"user_name\":\"user-1\",\"enable_publicip\":false,\"ssl_enable\":false,"
+                     +
+                     "\"is_logical_volume\":false,\"extend_times\":0,\"enable_auto_topic\":false},{\"name\":\"test-instance-2\",\"engine\":\"kafka\","
+                     +
+                     "\"storage_space\":4932,\"partition_num\":0,\"used_storage_space\":0,\"port\":0,\"instance_id\":\"id-2\",\"charging_mode\":0,\"vpc_id\":\"vpc-id-2\","
+                     +
+                     "\"user_name\":\"user-2\",\"enable_publicip\":false,\"ssl_enable\":false,\"is_logical_volume\":true,\"extend_times\":0,\"enable_auto_topic\":false}]",
+                responseExchange.getIn().getBody(String.class));
+    }
+}
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/test/java/org/apache/camel/component/huaweicloud/dms/QueryInstanceTest.java b/components/camel-huawei/camel-huaweicloud-dms/src/test/java/org/apache/camel/component/huaweicloud/dms/QueryInstanceTest.java
new file mode 100644
index 0000000..475ac30
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/test/java/org/apache/camel/component/huaweicloud/dms/QueryInstanceTest.java
@@ -0,0 +1,87 @@
+/*
+ * 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.huaweicloud.dms;
+
+import org.apache.camel.BindToRegistry;
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.dms.constants.DMSProperties;
+import org.apache.camel.component.huaweicloud.dms.models.DmsInstance;
+import org.apache.camel.component.huaweicloud.dms.models.QueryInstanceRequest;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+public class QueryInstanceTest extends CamelTestSupport {
+    TestConfiguration testConfiguration = new TestConfiguration();
+
+    @BindToRegistry("dmsClient")
+    DmsClient mockClient = Mockito.mock(DmsClient.class);
+
+    @BindToRegistry("serviceKeys")
+    ServiceKeys serviceKeys = new ServiceKeys(
+            testConfiguration.getProperty("authenticationKey"),
+            testConfiguration.getProperty("secretKey"));
+
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("direct:operation")
+                        .setProperty(DMSProperties.OPERATION, constant("queryInstance"))
+                        .to("hwcloud-dms:?" +
+                            "serviceKeys=#serviceKeys" +
+                            "&region=" + testConfiguration.getProperty("region") +
+                            "&instanceId=" + testConfiguration.getProperty("instanceId") +
+                            "&ignoreSslVerification=true" +
+                            "&dmsClient=#dmsClient")
+                        .log("Operation successful")
+                        .to("mock:operation_result");
+            }
+        };
+    }
+
+    @Test
+    public void testOperation() throws Exception {
+        DmsInstance instance = new DmsInstance()
+                .withName("test-instance-1")
+                .withEngine(testConfiguration.getProperty("engine"))
+                .withStorageSpace(500)
+                .withInstanceId("id-1")
+                .withVpcId("vpc-id-1")
+                .withUserName("user-1");
+
+        Mockito.when(mockClient.queryInstance(Mockito.any(QueryInstanceRequest.class))).thenReturn(instance);
+
+        MockEndpoint mock = getMockEndpoint("mock:operation_result");
+        mock.expectedMinimumMessageCount(1);
+        template.sendBody("direct:operation", "sample_body");
+        Exchange responseExchange = mock.getExchanges().get(0);
+
+        mock.assertIsSatisfied();
+
+        assertEquals(
+                "{\"name\":\"test-instance-1\",\"engine\":\"kafka\",\"storage_space\":500,\"partition_num\":0,\"used_storage_space\":0,\"port\":0,"
+                     +
+                     "\"instance_id\":\"id-1\",\"charging_mode\":0,\"vpc_id\":\"vpc-id-1\",\"user_name\":\"user-1\",\"enable_publicip\":false,\"ssl_enable\":false,"
+                     +
+                     "\"is_logical_volume\":false,\"extend_times\":0,\"enable_auto_topic\":false}",
+                responseExchange.getIn().getBody(String.class));
+    }
+}
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/test/java/org/apache/camel/component/huaweicloud/dms/TestConfiguration.java b/components/camel-huawei/camel-huaweicloud-dms/src/test/java/org/apache/camel/component/huaweicloud/dms/TestConfiguration.java
new file mode 100644
index 0000000..8c60790
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/test/java/org/apache/camel/component/huaweicloud/dms/TestConfiguration.java
@@ -0,0 +1,45 @@
+/*
+ * 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.huaweicloud.dms;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class TestConfiguration {
+    private static Map<String, String> propertyMap;
+
+    public TestConfiguration() {
+        initPropertyMap();
+    }
+
+    private void initPropertyMap() {
+        propertyMap = new HashMap<>();
+        propertyMap.put("authenticationKey", "dummy_authentication_key");
+        propertyMap.put("secretKey", "dummy_secret_key");
+        propertyMap.put("region", "dummy_region");
+        propertyMap.put("endpoint", "dummy_endpoint");
+        propertyMap.put("engine", "kafka");
+        propertyMap.put("instanceId", "dummy_id");
+    }
+
+    public String getProperty(String key) {
+        if (propertyMap == null) {
+            initPropertyMap();
+        }
+        return propertyMap.get(key);
+    }
+}
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/test/java/org/apache/camel/component/huaweicloud/dms/constants/DMSOperationsTest.java b/components/camel-huawei/camel-huaweicloud-dms/src/test/java/org/apache/camel/component/huaweicloud/dms/constants/DMSOperationsTest.java
new file mode 100644
index 0000000..fa73fe3
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/test/java/org/apache/camel/component/huaweicloud/dms/constants/DMSOperationsTest.java
@@ -0,0 +1,29 @@
+/*
+ * 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.huaweicloud.dms.constants;
+
+import org.junit.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class DMSOperationsTest {
+    @Test
+    public void test() {
+        assertEquals("listInstances", DMSOperations.LIST_INSTANCES);
+        assertEquals("queryInstance", DMSOperations.QUERY_INSTANCE);
+    }
+}
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/test/java/org/apache/camel/component/huaweicloud/dms/constants/DMSPropertiesTest.java b/components/camel-huawei/camel-huaweicloud-dms/src/test/java/org/apache/camel/component/huaweicloud/dms/constants/DMSPropertiesTest.java
new file mode 100644
index 0000000..fed63b9
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/test/java/org/apache/camel/component/huaweicloud/dms/constants/DMSPropertiesTest.java
@@ -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.
+ */
+package org.apache.camel.component.huaweicloud.dms.constants;
+
+import org.junit.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class DMSPropertiesTest {
+    @Test
+    public void test() {
+        assertEquals("CamelHwCloudDmsOperation", DMSProperties.OPERATION);
+        assertEquals("CamelHwCloudDmsEngine", DMSProperties.ENGINE);
+        assertEquals("CamelHwCloudDmsInstanceId", DMSProperties.INSTANCE_ID);
+    }
+}
diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/test/resources/log4j2.properties b/components/camel-huawei/camel-huaweicloud-dms/src/test/resources/log4j2.properties
new file mode 100644
index 0000000..faeaff8
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-dms/src/test/resources/log4j2.properties
@@ -0,0 +1,28 @@
+## ---------------------------------------------------------------------------
+## 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-huaweicloud-dms-test.log
+appender.file.layout.type = PatternLayout
+appender.file.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
+appender.stdout.type = Console
+appender.stdout.name = stdout
+appender.stdout.layout.type = PatternLayout
+appender.stdout.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-huawei/pom.xml b/components/camel-huawei/pom.xml
index 039a263..82431c4 100644
--- a/components/camel-huawei/pom.xml
+++ b/components/camel-huawei/pom.xml
@@ -34,10 +34,11 @@
 
     
     <modules>
-		<module>camel-huaweicloud-common</module>
+	<module>camel-huaweicloud-common</module>
+	<module>camel-huaweicloud-dms</module>
         <module>camel-huaweicloud-functiongraph</module>
         <module>camel-huaweicloud-iam</module>
-		<module>camel-huaweicloud-obs</module>
+	<module>camel-huaweicloud-obs</module>
         <module>camel-huaweicloud-smn</module>
     </modules>
 
diff --git a/core/camel-allcomponents/pom.xml b/core/camel-allcomponents/pom.xml
index 72cd68f..ba1aebe 100644
--- a/core/camel-allcomponents/pom.xml
+++ b/core/camel-allcomponents/pom.xml
@@ -619,6 +619,10 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.camel</groupId>
+			<artifactId>camel-huaweicloud-dms</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.camel</groupId>
 			<artifactId>camel-huaweicloud-functiongraph</artifactId>
 		</dependency>
 		<dependency>
diff --git a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
index fd49e66..97beb0b 100644
--- a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
+++ b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
@@ -2012,6 +2012,20 @@ public interface ComponentsBuilderFactory {
         return org.apache.camel.builder.component.dsl.HttpsComponentBuilderFactory.https();
     }
     /**
+     * Huawei Distributed Message Service (DMS) (camel-huaweicloud-dms)
+     * To integrate with a fully managed, high-performance message queuing
+     * service on Huawei Cloud
+     * 
+     * Category: cloud
+     * Since: 3.12
+     * Maven coordinates: org.apache.camel:camel-huaweicloud-dms
+     * 
+     * @return the dsl builder
+     */
+    static org.apache.camel.builder.component.dsl.HwcloudDmsComponentBuilderFactory.HwcloudDmsComponentBuilder hwcloudDms() {
+        return org.apache.camel.builder.component.dsl.HwcloudDmsComponentBuilderFactory.hwcloudDms();
+    }
+    /**
      * Huawei FunctionGraph (camel-huaweicloud-functiongraph)
      * To call serverless functions on Huawei Cloud
      * 
diff --git a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/HwcloudDmsComponentBuilderFactory.java b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/HwcloudDmsComponentBuilderFactory.java
new file mode 100644
index 0000000..bc15445
--- /dev/null
+++ b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/HwcloudDmsComponentBuilderFactory.java
@@ -0,0 +1,123 @@
+/*
+ * 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.builder.component.dsl;
+
+import javax.annotation.Generated;
+import org.apache.camel.Component;
+import org.apache.camel.builder.component.AbstractComponentBuilder;
+import org.apache.camel.builder.component.ComponentBuilder;
+import org.apache.camel.component.huaweicloud.dms.DMSComponent;
+
+/**
+ * To integrate with a fully managed, high-performance message queuing service
+ * on Huawei Cloud
+ * 
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.ComponentDslMojo")
+public interface HwcloudDmsComponentBuilderFactory {
+
+    /**
+     * Huawei Distributed Message Service (DMS) (camel-huaweicloud-dms)
+     * To integrate with a fully managed, high-performance message queuing
+     * service on Huawei Cloud
+     * 
+     * Category: cloud
+     * Since: 3.12
+     * Maven coordinates: org.apache.camel:camel-huaweicloud-dms
+     * 
+     * @return the dsl builder
+     */
+    static HwcloudDmsComponentBuilder hwcloudDms() {
+        return new HwcloudDmsComponentBuilderImpl();
+    }
+
+    /**
+     * Builder for the Huawei Distributed Message Service (DMS) component.
+     */
+    interface HwcloudDmsComponentBuilder
+            extends
+                ComponentBuilder<DMSComponent> {
+        /**
+         * Whether the producer should be started lazy (on the first message).
+         * By starting lazy you can use this to allow CamelContext and routes to
+         * startup in situations where a producer may otherwise fail during
+         * starting and cause the route to fail being started. By deferring this
+         * startup to be lazy then the startup failure can be handled during
+         * routing messages via Camel's routing error handlers. Beware that when
+         * the first message is processed then creating and starting the
+         * producer may take a little time and prolong the total processing time
+         * of the processing.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param lazyStartProducer the value to set
+         * @return the dsl builder
+         */
+        default HwcloudDmsComponentBuilder lazyStartProducer(
+                boolean lazyStartProducer) {
+            doSetProperty("lazyStartProducer", lazyStartProducer);
+            return this;
+        }
+        /**
+         * Whether autowiring is enabled. This is used for automatic autowiring
+         * options (the option must be marked as autowired) by looking up in the
+         * registry to find if there is a single instance of matching type,
+         * which then gets configured on the component. This can be used for
+         * automatic configuring JDBC data sources, JMS connection factories,
+         * AWS Clients, etc.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: true
+         * Group: advanced
+         * 
+         * @param autowiredEnabled the value to set
+         * @return the dsl builder
+         */
+        default HwcloudDmsComponentBuilder autowiredEnabled(
+                boolean autowiredEnabled) {
+            doSetProperty("autowiredEnabled", autowiredEnabled);
+            return this;
+        }
+    }
+
+    class HwcloudDmsComponentBuilderImpl
+            extends
+                AbstractComponentBuilder<DMSComponent>
+            implements
+                HwcloudDmsComponentBuilder {
+        @Override
+        protected DMSComponent buildConcreteComponent() {
+            return new DMSComponent();
+        }
+        @Override
+        protected boolean setPropertyOnComponent(
+                Component component,
+                String name,
+                Object value) {
+            switch (name) {
+            case "lazyStartProducer": ((DMSComponent) component).setLazyStartProducer((boolean) value); return true;
+            case "autowiredEnabled": ((DMSComponent) component).setAutowiredEnabled((boolean) value); return true;
+            default: return false;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/core/camel-componentdsl/src/generated/resources/metadata.json b/core/camel-componentdsl/src/generated/resources/metadata.json
index 02b95e8..58ba9aa 100644
--- a/core/camel-componentdsl/src/generated/resources/metadata.json
+++ b/core/camel-componentdsl/src/generated/resources/metadata.json
@@ -3282,6 +3282,28 @@
     "producerOnly": true,
     "lenientProperties": true
   },
+  "HwcloudDmsComponentBuilderFactory": {
+    "kind": "component",
+    "name": "hwcloud-dms",
+    "title": "Huawei Distributed Message Service (DMS)",
+    "description": "To integrate with a fully managed, high-performance message queuing service on Huawei Cloud",
+    "deprecated": false,
+    "firstVersion": "3.12.0",
+    "label": "cloud",
+    "javaType": "org.apache.camel.component.huaweicloud.dms.DMSComponent",
+    "supportLevel": "Preview",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-huaweicloud-dms",
+    "version": "3.12.0-SNAPSHOT",
+    "scheme": "hwcloud-dms",
+    "extendsScheme": "",
+    "syntax": "hwcloud-dms:operation",
+    "async": false,
+    "api": false,
+    "consumerOnly": false,
+    "producerOnly": true,
+    "lenientProperties": false
+  },
   "HwcloudFunctiongraphComponentBuilderFactory": {
     "kind": "component",
     "name": "hwcloud-functiongraph",
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
index 1ea0291..fb84e4c 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
@@ -28,13 +28,11 @@ import javax.annotation.Generated;
 @Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
 public interface EndpointBuilderFactory
         extends
-            org.apache.camel.builder.endpoint.dsl.AMQPEndpointBuilderFactory.AMQPBuilders,
-            org.apache.camel.builder.endpoint.dsl.AS2EndpointBuilderFactory.AS2Builders,
-            org.apache.camel.builder.endpoint.dsl.AWS2EC2EndpointBuilderFactory.AWS2EC2Builders,
-            org.apache.camel.builder.endpoint.dsl.AWS2S3EndpointBuilderFactory.AWS2S3Builders,
             org.apache.camel.builder.endpoint.dsl.ActiveMQEndpointBuilderFactory.ActiveMQBuilders,
             org.apache.camel.builder.endpoint.dsl.AhcEndpointBuilderFactory.AhcBuilders,
+            org.apache.camel.builder.endpoint.dsl.AMQPEndpointBuilderFactory.AMQPBuilders,
             org.apache.camel.builder.endpoint.dsl.ArangoDbEndpointBuilderFactory.ArangoDbBuilders,
+            org.apache.camel.builder.endpoint.dsl.AS2EndpointBuilderFactory.AS2Builders,
             org.apache.camel.builder.endpoint.dsl.AsteriskEndpointBuilderFactory.AsteriskBuilders,
             org.apache.camel.builder.endpoint.dsl.Athena2EndpointBuilderFactory.Athena2Builders,
             org.apache.camel.builder.endpoint.dsl.AtlasMapEndpointBuilderFactory.AtlasMapBuilders,
@@ -48,16 +46,16 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.AtomixSetEndpointBuilderFactory.AtomixSetBuilders,
             org.apache.camel.builder.endpoint.dsl.AtomixValueEndpointBuilderFactory.AtomixValueBuilders,
             org.apache.camel.builder.endpoint.dsl.AvroEndpointBuilderFactory.AvroBuilders,
+            org.apache.camel.builder.endpoint.dsl.AWS2EC2EndpointBuilderFactory.AWS2EC2Builders,
+            org.apache.camel.builder.endpoint.dsl.AWS2S3EndpointBuilderFactory.AWS2S3Builders,
             org.apache.camel.builder.endpoint.dsl.BeanEndpointBuilderFactory.BeanBuilders,
-            org.apache.camel.builder.endpoint.dsl.BeanValidatorEndpointBuilderFactory.BeanValidatorBuilders,
             org.apache.camel.builder.endpoint.dsl.BeanstalkEndpointBuilderFactory.BeanstalkBuilders,
+            org.apache.camel.builder.endpoint.dsl.BeanValidatorEndpointBuilderFactory.BeanValidatorBuilders,
             org.apache.camel.builder.endpoint.dsl.BlobEndpointBuilderFactory.BlobBuilders,
             org.apache.camel.builder.endpoint.dsl.BonitaEndpointBuilderFactory.BonitaBuilders,
             org.apache.camel.builder.endpoint.dsl.BoxEndpointBuilderFactory.BoxBuilders,
             org.apache.camel.builder.endpoint.dsl.BraintreeEndpointBuilderFactory.BraintreeBuilders,
             org.apache.camel.builder.endpoint.dsl.BrowseEndpointBuilderFactory.BrowseBuilders,
-            org.apache.camel.builder.endpoint.dsl.CMEndpointBuilderFactory.CMBuilders,
-            org.apache.camel.builder.endpoint.dsl.CMISEndpointBuilderFactory.CMISBuilders,
             org.apache.camel.builder.endpoint.dsl.CaffeineCacheEndpointBuilderFactory.CaffeineCacheBuilders,
             org.apache.camel.builder.endpoint.dsl.CaffeineLoadCacheEndpointBuilderFactory.CaffeineLoadCacheBuilders,
             org.apache.camel.builder.endpoint.dsl.CassandraEndpointBuilderFactory.CassandraBuilders,
@@ -66,19 +64,20 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.CinderEndpointBuilderFactory.CinderBuilders,
             org.apache.camel.builder.endpoint.dsl.ClassEndpointBuilderFactory.ClassBuilders,
             org.apache.camel.builder.endpoint.dsl.ClientEndpointBuilderFactory.ClientBuilders,
+            org.apache.camel.builder.endpoint.dsl.CMEndpointBuilderFactory.CMBuilders,
+            org.apache.camel.builder.endpoint.dsl.CMISEndpointBuilderFactory.CMISBuilders,
             org.apache.camel.builder.endpoint.dsl.CoAPEndpointBuilderFactory.CoAPBuilders,
             org.apache.camel.builder.endpoint.dsl.CometdEndpointBuilderFactory.CometdBuilders,
             org.apache.camel.builder.endpoint.dsl.ConsulEndpointBuilderFactory.ConsulBuilders,
             org.apache.camel.builder.endpoint.dsl.ControlBusEndpointBuilderFactory.ControlBusBuilders,
             org.apache.camel.builder.endpoint.dsl.CordaEndpointBuilderFactory.CordaBuilders,
             org.apache.camel.builder.endpoint.dsl.CosmosDbEndpointBuilderFactory.CosmosDbBuilders,
-            org.apache.camel.builder.endpoint.dsl.CouchDbEndpointBuilderFactory.CouchDbBuilders,
             org.apache.camel.builder.endpoint.dsl.CouchbaseEndpointBuilderFactory.CouchbaseBuilders,
+            org.apache.camel.builder.endpoint.dsl.CouchDbEndpointBuilderFactory.CouchDbBuilders,
             org.apache.camel.builder.endpoint.dsl.CronEndpointBuilderFactory.CronBuilders,
             org.apache.camel.builder.endpoint.dsl.Cw2EndpointBuilderFactory.Cw2Builders,
             org.apache.camel.builder.endpoint.dsl.CxfEndpointBuilderFactory.CxfBuilders,
             org.apache.camel.builder.endpoint.dsl.CxfRsEndpointBuilderFactory.CxfRsBuilders,
-            org.apache.camel.builder.endpoint.dsl.DJLEndpointBuilderFactory.DJLBuilders,
             org.apache.camel.builder.endpoint.dsl.DataFormatEndpointBuilderFactory.DataFormatBuilders,
             org.apache.camel.builder.endpoint.dsl.DataLakeEndpointBuilderFactory.DataLakeBuilders,
             org.apache.camel.builder.endpoint.dsl.DataSetEndpointBuilderFactory.DataSetBuilders,
@@ -95,22 +94,24 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.DirectVmEndpointBuilderFactory.DirectVmBuilders,
             org.apache.camel.builder.endpoint.dsl.DisruptorEndpointBuilderFactory.DisruptorBuilders,
             org.apache.camel.builder.endpoint.dsl.DisruptorVmEndpointBuilderFactory.DisruptorVmBuilders,
+            org.apache.camel.builder.endpoint.dsl.DJLEndpointBuilderFactory.DJLBuilders,
+            org.apache.camel.builder.endpoint.dsl.DMSEndpointBuilderFactory.DMSBuilders,
             org.apache.camel.builder.endpoint.dsl.DnsEndpointBuilderFactory.DnsBuilders,
             org.apache.camel.builder.endpoint.dsl.DockerEndpointBuilderFactory.DockerBuilders,
             org.apache.camel.builder.endpoint.dsl.DozerEndpointBuilderFactory.DozerBuilders,
             org.apache.camel.builder.endpoint.dsl.DrillEndpointBuilderFactory.DrillBuilders,
             org.apache.camel.builder.endpoint.dsl.DropboxEndpointBuilderFactory.DropboxBuilders,
             org.apache.camel.builder.endpoint.dsl.ECS2EndpointBuilderFactory.ECS2Builders,
-            org.apache.camel.builder.endpoint.dsl.EKS2EndpointBuilderFactory.EKS2Builders,
             org.apache.camel.builder.endpoint.dsl.EhcacheEndpointBuilderFactory.EhcacheBuilders,
+            org.apache.camel.builder.endpoint.dsl.EKS2EndpointBuilderFactory.EKS2Builders,
             org.apache.camel.builder.endpoint.dsl.ElasticsearchEndpointBuilderFactory.ElasticsearchBuilders,
             org.apache.camel.builder.endpoint.dsl.ElsqlEndpointBuilderFactory.ElsqlBuilders,
             org.apache.camel.builder.endpoint.dsl.EtcdKeysEndpointBuilderFactory.EtcdKeysBuilders,
             org.apache.camel.builder.endpoint.dsl.EtcdStatsEndpointBuilderFactory.EtcdStatsBuilders,
             org.apache.camel.builder.endpoint.dsl.EtcdWatchEndpointBuilderFactory.EtcdWatchBuilders,
+            org.apache.camel.builder.endpoint.dsl.EventbridgeEndpointBuilderFactory.EventbridgeBuilders,
             org.apache.camel.builder.endpoint.dsl.EventEndpointBuilderFactory.EventBuilders,
             org.apache.camel.builder.endpoint.dsl.EventHubsEndpointBuilderFactory.EventHubsBuilders,
-            org.apache.camel.builder.endpoint.dsl.EventbridgeEndpointBuilderFactory.EventbridgeBuilders,
             org.apache.camel.builder.endpoint.dsl.ExecEndpointBuilderFactory.ExecBuilders,
             org.apache.camel.builder.endpoint.dsl.FacebookEndpointBuilderFactory.FacebookBuilders,
             org.apache.camel.builder.endpoint.dsl.FhirEndpointBuilderFactory.FhirBuilders,
@@ -146,7 +147,6 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.GridFsEndpointBuilderFactory.GridFsBuilders,
             org.apache.camel.builder.endpoint.dsl.GrpcEndpointBuilderFactory.GrpcBuilders,
             org.apache.camel.builder.endpoint.dsl.GuavaEventBusEndpointBuilderFactory.GuavaEventBusBuilders,
-            org.apache.camel.builder.endpoint.dsl.HBaseEndpointBuilderFactory.HBaseBuilders,
             org.apache.camel.builder.endpoint.dsl.HazelcastAtomicnumberEndpointBuilderFactory.HazelcastAtomicnumberBuilders,
             org.apache.camel.builder.endpoint.dsl.HazelcastInstanceEndpointBuilderFactory.HazelcastInstanceBuilders,
             org.apache.camel.builder.endpoint.dsl.HazelcastListEndpointBuilderFactory.HazelcastListBuilders,
@@ -158,12 +158,11 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.HazelcastSedaEndpointBuilderFactory.HazelcastSedaBuilders,
             org.apache.camel.builder.endpoint.dsl.HazelcastSetEndpointBuilderFactory.HazelcastSetBuilders,
             org.apache.camel.builder.endpoint.dsl.HazelcastTopicEndpointBuilderFactory.HazelcastTopicBuilders,
+            org.apache.camel.builder.endpoint.dsl.HBaseEndpointBuilderFactory.HBaseBuilders,
             org.apache.camel.builder.endpoint.dsl.HdfsEndpointBuilderFactory.HdfsBuilders,
             org.apache.camel.builder.endpoint.dsl.HttpEndpointBuilderFactory.HttpBuilders,
             org.apache.camel.builder.endpoint.dsl.IAM2EndpointBuilderFactory.IAM2Builders,
             org.apache.camel.builder.endpoint.dsl.IAMEndpointBuilderFactory.IAMBuilders,
-            org.apache.camel.builder.endpoint.dsl.IOTAEndpointBuilderFactory.IOTABuilders,
-            org.apache.camel.builder.endpoint.dsl.IPFSEndpointBuilderFactory.IPFSBuilders,
             org.apache.camel.builder.endpoint.dsl.IgniteCacheEndpointBuilderFactory.IgniteCacheBuilders,
             org.apache.camel.builder.endpoint.dsl.IgniteComputeEndpointBuilderFactory.IgniteComputeBuilders,
             org.apache.camel.builder.endpoint.dsl.IgniteEventsEndpointBuilderFactory.IgniteEventsBuilders,
@@ -174,35 +173,37 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.InfinispanEmbeddedEndpointBuilderFactory.InfinispanEmbeddedBuilders,
             org.apache.camel.builder.endpoint.dsl.InfinispanRemoteEndpointBuilderFactory.InfinispanRemoteBuilders,
             org.apache.camel.builder.endpoint.dsl.InfluxDbEndpointBuilderFactory.InfluxDbBuilders,
+            org.apache.camel.builder.endpoint.dsl.IOTAEndpointBuilderFactory.IOTABuilders,
+            org.apache.camel.builder.endpoint.dsl.IPFSEndpointBuilderFactory.IPFSBuilders,
             org.apache.camel.builder.endpoint.dsl.IrcEndpointBuilderFactory.IrcBuilders,
             org.apache.camel.builder.endpoint.dsl.IronMQEndpointBuilderFactory.IronMQBuilders,
             org.apache.camel.builder.endpoint.dsl.JBPMEndpointBuilderFactory.JBPMBuilders,
             org.apache.camel.builder.endpoint.dsl.JCacheEndpointBuilderFactory.JCacheBuilders,
-            org.apache.camel.builder.endpoint.dsl.JGroupsEndpointBuilderFactory.JGroupsBuilders,
-            org.apache.camel.builder.endpoint.dsl.JGroupsRaftEndpointBuilderFactory.JGroupsRaftBuilders,
-            org.apache.camel.builder.endpoint.dsl.JMXEndpointBuilderFactory.JMXBuilders,
-            org.apache.camel.builder.endpoint.dsl.JSR356WebSocketEndpointBuilderFactory.JSR356WebSocketBuilders,
             org.apache.camel.builder.endpoint.dsl.JcloudsEndpointBuilderFactory.JcloudsBuilders,
             org.apache.camel.builder.endpoint.dsl.JcrEndpointBuilderFactory.JcrBuilders,
             org.apache.camel.builder.endpoint.dsl.JdbcEndpointBuilderFactory.JdbcBuilders,
             org.apache.camel.builder.endpoint.dsl.JettyHttpEndpointBuilderFactory.JettyHttpBuilders,
+            org.apache.camel.builder.endpoint.dsl.JGroupsEndpointBuilderFactory.JGroupsBuilders,
+            org.apache.camel.builder.endpoint.dsl.JGroupsRaftEndpointBuilderFactory.JGroupsRaftBuilders,
             org.apache.camel.builder.endpoint.dsl.JingEndpointBuilderFactory.JingBuilders,
             org.apache.camel.builder.endpoint.dsl.JiraEndpointBuilderFactory.JiraBuilders,
             org.apache.camel.builder.endpoint.dsl.JmsEndpointBuilderFactory.JmsBuilders,
+            org.apache.camel.builder.endpoint.dsl.JMXEndpointBuilderFactory.JMXBuilders,
             org.apache.camel.builder.endpoint.dsl.JoltEndpointBuilderFactory.JoltBuilders,
             org.apache.camel.builder.endpoint.dsl.JooqEndpointBuilderFactory.JooqBuilders,
             org.apache.camel.builder.endpoint.dsl.JpaEndpointBuilderFactory.JpaBuilders,
             org.apache.camel.builder.endpoint.dsl.JsltEndpointBuilderFactory.JsltBuilders,
-            org.apache.camel.builder.endpoint.dsl.JsonValidatorEndpointBuilderFactory.JsonValidatorBuilders,
             org.apache.camel.builder.endpoint.dsl.JsonataEndpointBuilderFactory.JsonataBuilders,
+            org.apache.camel.builder.endpoint.dsl.JsonValidatorEndpointBuilderFactory.JsonValidatorBuilders,
+            org.apache.camel.builder.endpoint.dsl.JSR356WebSocketEndpointBuilderFactory.JSR356WebSocketBuilders,
             org.apache.camel.builder.endpoint.dsl.Jt400EndpointBuilderFactory.Jt400Builders,
-            org.apache.camel.builder.endpoint.dsl.KMS2EndpointBuilderFactory.KMS2Builders,
             org.apache.camel.builder.endpoint.dsl.KafkaEndpointBuilderFactory.KafkaBuilders,
             org.apache.camel.builder.endpoint.dsl.KameletEndpointBuilderFactory.KameletBuilders,
             org.apache.camel.builder.endpoint.dsl.KameletReifyEndpointBuilderFactory.KameletReifyBuilders,
             org.apache.camel.builder.endpoint.dsl.KeystoneEndpointBuilderFactory.KeystoneBuilders,
             org.apache.camel.builder.endpoint.dsl.Kinesis2EndpointBuilderFactory.Kinesis2Builders,
             org.apache.camel.builder.endpoint.dsl.KinesisFirehose2EndpointBuilderFactory.KinesisFirehose2Builders,
+            org.apache.camel.builder.endpoint.dsl.KMS2EndpointBuilderFactory.KMS2Builders,
             org.apache.camel.builder.endpoint.dsl.KubernetesConfigMapsEndpointBuilderFactory.KubernetesConfigMapsBuilders,
             org.apache.camel.builder.endpoint.dsl.KubernetesCustomResourcesEndpointBuilderFactory.KubernetesCustomResourcesBuilders,
             org.apache.camel.builder.endpoint.dsl.KubernetesDeploymentsEndpointBuilderFactory.KubernetesDeploymentsBuilders,
@@ -226,13 +227,11 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.LogEndpointBuilderFactory.LogBuilders,
             org.apache.camel.builder.endpoint.dsl.LuceneEndpointBuilderFactory.LuceneBuilders,
             org.apache.camel.builder.endpoint.dsl.LumberjackEndpointBuilderFactory.LumberjackBuilders,
-            org.apache.camel.builder.endpoint.dsl.MQ2EndpointBuilderFactory.MQ2Builders,
-            org.apache.camel.builder.endpoint.dsl.MSK2EndpointBuilderFactory.MSK2Builders,
             org.apache.camel.builder.endpoint.dsl.MailEndpointBuilderFactory.MailBuilders,
             org.apache.camel.builder.endpoint.dsl.MasterEndpointBuilderFactory.MasterBuilders,
             org.apache.camel.builder.endpoint.dsl.MetricsEndpointBuilderFactory.MetricsBuilders,
-            org.apache.camel.builder.endpoint.dsl.MicroProfileMetricsEndpointBuilderFactory.MicroProfileMetricsBuilders,
             org.apache.camel.builder.endpoint.dsl.MicrometerEndpointBuilderFactory.MicrometerBuilders,
+            org.apache.camel.builder.endpoint.dsl.MicroProfileMetricsEndpointBuilderFactory.MicroProfileMetricsBuilders,
             org.apache.camel.builder.endpoint.dsl.MiloClientEndpointBuilderFactory.MiloClientBuilders,
             org.apache.camel.builder.endpoint.dsl.MiloServerEndpointBuilderFactory.MiloServerBuilders,
             org.apache.camel.builder.endpoint.dsl.MinaEndpointBuilderFactory.MinaBuilders,
@@ -240,6 +239,8 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.MllpEndpointBuilderFactory.MllpBuilders,
             org.apache.camel.builder.endpoint.dsl.MockEndpointBuilderFactory.MockBuilders,
             org.apache.camel.builder.endpoint.dsl.MongoDbEndpointBuilderFactory.MongoDbBuilders,
+            org.apache.camel.builder.endpoint.dsl.MQ2EndpointBuilderFactory.MQ2Builders,
+            org.apache.camel.builder.endpoint.dsl.MSK2EndpointBuilderFactory.MSK2Builders,
             org.apache.camel.builder.endpoint.dsl.MsvEndpointBuilderFactory.MsvBuilders,
             org.apache.camel.builder.endpoint.dsl.MustacheEndpointBuilderFactory.MustacheBuilders,
             org.apache.camel.builder.endpoint.dsl.MvelEndpointBuilderFactory.MvelBuilders,
@@ -247,9 +248,9 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.MyBatisEndpointBuilderFactory.MyBatisBuilders,
             org.apache.camel.builder.endpoint.dsl.NagiosEndpointBuilderFactory.NagiosBuilders,
             org.apache.camel.builder.endpoint.dsl.NatsEndpointBuilderFactory.NatsBuilders,
-            org.apache.camel.builder.endpoint.dsl.NetWeaverEndpointBuilderFactory.NetWeaverBuilders,
             org.apache.camel.builder.endpoint.dsl.NettyEndpointBuilderFactory.NettyBuilders,
             org.apache.camel.builder.endpoint.dsl.NettyHttpEndpointBuilderFactory.NettyHttpBuilders,
+            org.apache.camel.builder.endpoint.dsl.NetWeaverEndpointBuilderFactory.NetWeaverBuilders,
             org.apache.camel.builder.endpoint.dsl.NeutronEndpointBuilderFactory.NeutronBuilders,
             org.apache.camel.builder.endpoint.dsl.NitriteEndpointBuilderFactory.NitriteBuilders,
             org.apache.camel.builder.endpoint.dsl.NovaEndpointBuilderFactory.NovaBuilders,
@@ -278,13 +279,12 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.RedisEndpointBuilderFactory.RedisBuilders,
             org.apache.camel.builder.endpoint.dsl.RefEndpointBuilderFactory.RefBuilders,
             org.apache.camel.builder.endpoint.dsl.RestApiEndpointBuilderFactory.RestApiBuilders,
+            org.apache.camel.builder.endpoint.dsl.ResteasyEndpointBuilderFactory.ResteasyBuilders,
             org.apache.camel.builder.endpoint.dsl.RestEndpointBuilderFactory.RestBuilders,
             org.apache.camel.builder.endpoint.dsl.RestOpenApiEndpointBuilderFactory.RestOpenApiBuilders,
             org.apache.camel.builder.endpoint.dsl.RestSwaggerEndpointBuilderFactory.RestSwaggerBuilders,
-            org.apache.camel.builder.endpoint.dsl.ResteasyEndpointBuilderFactory.ResteasyBuilders,
             org.apache.camel.builder.endpoint.dsl.RobotFrameworkEndpointBuilderFactory.RobotFrameworkBuilders,
             org.apache.camel.builder.endpoint.dsl.RssEndpointBuilderFactory.RssBuilders,
-            org.apache.camel.builder.endpoint.dsl.STS2EndpointBuilderFactory.STS2Builders,
             org.apache.camel.builder.endpoint.dsl.SagaEndpointBuilderFactory.SagaBuilders,
             org.apache.camel.builder.endpoint.dsl.SalesforceEndpointBuilderFactory.SalesforceBuilders,
             org.apache.camel.builder.endpoint.dsl.SchedulerEndpointBuilderFactory.SchedulerBuilders,
@@ -327,6 +327,7 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.StompEndpointBuilderFactory.StompBuilders,
             org.apache.camel.builder.endpoint.dsl.StreamEndpointBuilderFactory.StreamBuilders,
             org.apache.camel.builder.endpoint.dsl.StringTemplateEndpointBuilderFactory.StringTemplateBuilders,
+            org.apache.camel.builder.endpoint.dsl.STS2EndpointBuilderFactory.STS2Builders,
             org.apache.camel.builder.endpoint.dsl.StubEndpointBuilderFactory.StubBuilders,
             org.apache.camel.builder.endpoint.dsl.SwiftEndpointBuilderFactory.SwiftBuilders,
             org.apache.camel.builder.endpoint.dsl.TelegramEndpointBuilderFactory.TelegramBuilders,
@@ -356,10 +357,10 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.WsEndpointBuilderFactory.WsBuilders,
             org.apache.camel.builder.endpoint.dsl.XChangeEndpointBuilderFactory.XChangeBuilders,
             org.apache.camel.builder.endpoint.dsl.XJEndpointBuilderFactory.XJBuilders,
-            org.apache.camel.builder.endpoint.dsl.XQueryEndpointBuilderFactory.XQueryBuilders,
             org.apache.camel.builder.endpoint.dsl.XmlSignerEndpointBuilderFactory.XmlSignerBuilders,
             org.apache.camel.builder.endpoint.dsl.XmlVerifierEndpointBuilderFactory.XmlVerifierBuilders,
             org.apache.camel.builder.endpoint.dsl.XmppEndpointBuilderFactory.XmppBuilders,
+            org.apache.camel.builder.endpoint.dsl.XQueryEndpointBuilderFactory.XQueryBuilders,
             org.apache.camel.builder.endpoint.dsl.XsltEndpointBuilderFactory.XsltBuilders,
             org.apache.camel.builder.endpoint.dsl.XsltSaxonEndpointBuilderFactory.XsltSaxonBuilders,
             org.apache.camel.builder.endpoint.dsl.YammerEndpointBuilderFactory.YammerBuilders,
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
index 215fe6e..7d06b5f 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
@@ -25,13 +25,11 @@ import javax.annotation.Generated;
 @Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
 public interface EndpointBuilders
         extends
-            org.apache.camel.builder.endpoint.dsl.AMQPEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.AS2EndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.AWS2EC2EndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.AWS2S3EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ActiveMQEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.AhcEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.AMQPEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ArangoDbEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.AS2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.AsteriskEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.Athena2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.AtlasMapEndpointBuilderFactory,
@@ -45,16 +43,16 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.AtomixSetEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.AtomixValueEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.AvroEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.AWS2EC2EndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.AWS2S3EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.BeanEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.BeanValidatorEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.BeanstalkEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.BeanValidatorEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.BlobEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.BonitaEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.BoxEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.BraintreeEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.BrowseEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.CMEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.CMISEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CaffeineCacheEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CaffeineLoadCacheEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CassandraEndpointBuilderFactory,
@@ -63,19 +61,20 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.CinderEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ClassEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ClientEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.CMEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.CMISEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CoAPEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CometdEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ConsulEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ControlBusEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CordaEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CosmosDbEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.CouchDbEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CouchbaseEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.CouchDbEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CronEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.Cw2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CxfEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CxfRsEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.DJLEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DataFormatEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DataLakeEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DataSetEndpointBuilderFactory,
@@ -92,22 +91,24 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.DirectVmEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DisruptorEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DisruptorVmEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.DJLEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.DMSEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DnsEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DockerEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DozerEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DrillEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DropboxEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ECS2EndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.EKS2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.EhcacheEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.EKS2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ElasticsearchEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ElsqlEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.EtcdKeysEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.EtcdStatsEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.EtcdWatchEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.EventbridgeEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.EventEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.EventHubsEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.EventbridgeEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ExecEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.FacebookEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.FhirEndpointBuilderFactory,
@@ -143,7 +144,6 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.GridFsEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.GrpcEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.GuavaEventBusEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.HBaseEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.HazelcastAtomicnumberEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.HazelcastInstanceEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.HazelcastListEndpointBuilderFactory,
@@ -155,12 +155,11 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.HazelcastSedaEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.HazelcastSetEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.HazelcastTopicEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.HBaseEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.HdfsEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.HttpEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.IAM2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.IAMEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.IOTAEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.IPFSEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.IgniteCacheEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.IgniteComputeEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.IgniteEventsEndpointBuilderFactory,
@@ -171,35 +170,37 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.InfinispanEmbeddedEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.InfinispanRemoteEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.InfluxDbEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.IOTAEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.IPFSEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.IrcEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.IronMQEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JBPMEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JCacheEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.JGroupsEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.JGroupsRaftEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.JMXEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.JSR356WebSocketEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JcloudsEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JcrEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JdbcEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JettyHttpEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.JGroupsEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.JGroupsRaftEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JingEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JiraEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JmsEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.JMXEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JoltEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JooqEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JpaEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JsltEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.JsonValidatorEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JsonataEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.JsonValidatorEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.JSR356WebSocketEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.Jt400EndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.KMS2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.KafkaEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.KameletEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.KameletReifyEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.KeystoneEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.Kinesis2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.KinesisFirehose2EndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.KMS2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.KubernetesConfigMapsEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.KubernetesCustomResourcesEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.KubernetesDeploymentsEndpointBuilderFactory,
@@ -223,13 +224,11 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.LogEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.LuceneEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.LumberjackEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.MQ2EndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.MSK2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MailEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MasterEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MetricsEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.MicroProfileMetricsEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MicrometerEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.MicroProfileMetricsEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MiloClientEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MiloServerEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MinaEndpointBuilderFactory,
@@ -237,6 +236,8 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.MllpEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MockEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MongoDbEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.MQ2EndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.MSK2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MsvEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MustacheEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MvelEndpointBuilderFactory,
@@ -244,9 +245,9 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.MyBatisEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.NagiosEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.NatsEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.NetWeaverEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.NettyEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.NettyHttpEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.NetWeaverEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.NeutronEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.NitriteEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.NovaEndpointBuilderFactory,
@@ -275,13 +276,12 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.RedisEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.RefEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.RestApiEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.ResteasyEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.RestEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.RestOpenApiEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.RestSwaggerEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.ResteasyEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.RobotFrameworkEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.RssEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.STS2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.SagaEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.SalesforceEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.SchedulerEndpointBuilderFactory,
@@ -324,6 +324,7 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.StompEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.StreamEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.StringTemplateEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.STS2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.StubEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.SwiftEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.TelegramEndpointBuilderFactory,
@@ -353,10 +354,10 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.WsEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.XChangeEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.XJEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.XQueryEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.XmlSignerEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.XmlVerifierEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.XmppEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.XQueryEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.XsltEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.XsltSaxonEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.YammerEndpointBuilderFactory,
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
index a74a8d2..5fc86bf 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
@@ -6804,6 +6804,51 @@ public class StaticEndpointBuilders {
         return org.apache.camel.builder.endpoint.dsl.HttpEndpointBuilderFactory.endpointBuilder(componentName, path);
     }
     /**
+     * Huawei Distributed Message Service (DMS) (camel-huaweicloud-dms)
+     * To integrate with a fully managed, high-performance message queuing
+     * service on Huawei Cloud
+     * 
+     * Category: cloud
+     * Since: 3.12
+     * Maven coordinates: org.apache.camel:camel-huaweicloud-dms
+     * 
+     * Syntax: <code>hwcloud-dms:operation</code>
+     * 
+     * Path parameter: operation (required)
+     * Operation to be performed
+     * 
+     * @param path operation
+     * @return the dsl builder
+     */
+    public static org.apache.camel.builder.endpoint.dsl.DMSEndpointBuilderFactory.DMSEndpointBuilder hwcloudDms(
+            String path) {
+        return org.apache.camel.builder.endpoint.dsl.DMSEndpointBuilderFactory.endpointBuilder("hwcloud-dms", path);
+    }
+    /**
+     * Huawei Distributed Message Service (DMS) (camel-huaweicloud-dms)
+     * To integrate with a fully managed, high-performance message queuing
+     * service on Huawei Cloud
+     * 
+     * Category: cloud
+     * Since: 3.12
+     * Maven coordinates: org.apache.camel:camel-huaweicloud-dms
+     * 
+     * Syntax: <code>hwcloud-dms:operation</code>
+     * 
+     * Path parameter: operation (required)
+     * Operation to be performed
+     * 
+     * @param componentName to use a custom component name for the endpoint
+     * instead of the default name
+     * @param path operation
+     * @return the dsl builder
+     */
+    public static org.apache.camel.builder.endpoint.dsl.DMSEndpointBuilderFactory.DMSEndpointBuilder hwcloudDms(
+            String componentName,
+            String path) {
+        return org.apache.camel.builder.endpoint.dsl.DMSEndpointBuilderFactory.endpointBuilder(componentName, path);
+    }
+    /**
      * Huawei FunctionGraph (camel-huaweicloud-functiongraph)
      * To call serverless functions on Huawei Cloud
      * 
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/DMSEndpointBuilderFactory.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/DMSEndpointBuilderFactory.java
new file mode 100644
index 0000000..34a3fa3
--- /dev/null
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/DMSEndpointBuilderFactory.java
@@ -0,0 +1,378 @@
+/*
+ * 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.builder.endpoint.dsl;
+
+import javax.annotation.Generated;
+import org.apache.camel.builder.EndpointConsumerBuilder;
+import org.apache.camel.builder.EndpointProducerBuilder;
+import org.apache.camel.builder.endpoint.AbstractEndpointBuilder;
+
+/**
+ * To integrate with a fully managed, high-performance message queuing service
+ * on Huawei Cloud
+ * 
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
+public interface DMSEndpointBuilderFactory {
+
+
+    /**
+     * Builder for endpoint for the Huawei Distributed Message Service (DMS)
+     * component.
+     */
+    public interface DMSEndpointBuilder extends EndpointProducerBuilder {
+        /**
+         * Authentication key for the cloud user.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Required: true
+         * Group: producer
+         * 
+         * @param authenticationKey the value to set
+         * @return the dsl builder
+         */
+        default DMSEndpointBuilder authenticationKey(String authenticationKey) {
+            doSetProperty("authenticationKey", authenticationKey);
+            return this;
+        }
+        /**
+         * DMS url. Carries higher precedence than region parameter based client
+         * initialization.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: producer
+         * 
+         * @param endpoint the value to set
+         * @return the dsl builder
+         */
+        default DMSEndpointBuilder endpoint(String endpoint) {
+            doSetProperty("endpoint", endpoint);
+            return this;
+        }
+        /**
+         * The message engine. Either kafka or rabbitmq. If the parameter is not
+         * specified, all instances will be queried.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: producer
+         * 
+         * @param engine the value to set
+         * @return the dsl builder
+         */
+        default DMSEndpointBuilder engine(String engine) {
+            doSetProperty("engine", engine);
+            return this;
+        }
+        /**
+         * Ignore SSL verification.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param ignoreSslVerification the value to set
+         * @return the dsl builder
+         */
+        default DMSEndpointBuilder ignoreSslVerification(
+                boolean ignoreSslVerification) {
+            doSetProperty("ignoreSslVerification", ignoreSslVerification);
+            return this;
+        }
+        /**
+         * Ignore SSL verification.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param ignoreSslVerification the value to set
+         * @return the dsl builder
+         */
+        default DMSEndpointBuilder ignoreSslVerification(
+                String ignoreSslVerification) {
+            doSetProperty("ignoreSslVerification", ignoreSslVerification);
+            return this;
+        }
+        /**
+         * The id of the instance. This option is mandatory when querying an
+         * instance.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: producer
+         * 
+         * @param instanceId the value to set
+         * @return the dsl builder
+         */
+        default DMSEndpointBuilder instanceId(String instanceId) {
+            doSetProperty("instanceId", instanceId);
+            return this;
+        }
+        /**
+         * Whether the producer should be started lazy (on the first message).
+         * By starting lazy you can use this to allow CamelContext and routes to
+         * startup in situations where a producer may otherwise fail during
+         * starting and cause the route to fail being started. By deferring this
+         * startup to be lazy then the startup failure can be handled during
+         * routing messages via Camel's routing error handlers. Beware that when
+         * the first message is processed then creating and starting the
+         * producer may take a little time and prolong the total processing time
+         * of the processing.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param lazyStartProducer the value to set
+         * @return the dsl builder
+         */
+        default DMSEndpointBuilder lazyStartProducer(boolean lazyStartProducer) {
+            doSetProperty("lazyStartProducer", lazyStartProducer);
+            return this;
+        }
+        /**
+         * Whether the producer should be started lazy (on the first message).
+         * By starting lazy you can use this to allow CamelContext and routes to
+         * startup in situations where a producer may otherwise fail during
+         * starting and cause the route to fail being started. By deferring this
+         * startup to be lazy then the startup failure can be handled during
+         * routing messages via Camel's routing error handlers. Beware that when
+         * the first message is processed then creating and starting the
+         * producer may take a little time and prolong the total processing time
+         * of the processing.
+         * 
+         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
+         * type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param lazyStartProducer the value to set
+         * @return the dsl builder
+         */
+        default DMSEndpointBuilder lazyStartProducer(String lazyStartProducer) {
+            doSetProperty("lazyStartProducer", lazyStartProducer);
+            return this;
+        }
+        /**
+         * Cloud project ID.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Required: true
+         * Group: producer
+         * 
+         * @param projectId the value to set
+         * @return the dsl builder
+         */
+        default DMSEndpointBuilder projectId(String projectId) {
+            doSetProperty("projectId", projectId);
+            return this;
+        }
+        /**
+         * Proxy server ip/hostname.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: producer
+         * 
+         * @param proxyHost the value to set
+         * @return the dsl builder
+         */
+        default DMSEndpointBuilder proxyHost(String proxyHost) {
+            doSetProperty("proxyHost", proxyHost);
+            return this;
+        }
+        /**
+         * Proxy authentication password.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: producer
+         * 
+         * @param proxyPassword the value to set
+         * @return the dsl builder
+         */
+        default DMSEndpointBuilder proxyPassword(String proxyPassword) {
+            doSetProperty("proxyPassword", proxyPassword);
+            return this;
+        }
+        /**
+         * Proxy server port.
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Group: producer
+         * 
+         * @param proxyPort the value to set
+         * @return the dsl builder
+         */
+        default DMSEndpointBuilder proxyPort(int proxyPort) {
+            doSetProperty("proxyPort", proxyPort);
+            return this;
+        }
+        /**
+         * Proxy server port.
+         * 
+         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Group: producer
+         * 
+         * @param proxyPort the value to set
+         * @return the dsl builder
+         */
+        default DMSEndpointBuilder proxyPort(String proxyPort) {
+            doSetProperty("proxyPort", proxyPort);
+            return this;
+        }
+        /**
+         * Proxy authentication user.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: producer
+         * 
+         * @param proxyUser the value to set
+         * @return the dsl builder
+         */
+        default DMSEndpointBuilder proxyUser(String proxyUser) {
+            doSetProperty("proxyUser", proxyUser);
+            return this;
+        }
+        /**
+         * DMS service region.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Required: true
+         * Group: producer
+         * 
+         * @param region the value to set
+         * @return the dsl builder
+         */
+        default DMSEndpointBuilder region(String region) {
+            doSetProperty("region", region);
+            return this;
+        }
+        /**
+         * Secret key for the cloud user.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Required: true
+         * Group: producer
+         * 
+         * @param secretKey the value to set
+         * @return the dsl builder
+         */
+        default DMSEndpointBuilder secretKey(String secretKey) {
+            doSetProperty("secretKey", secretKey);
+            return this;
+        }
+        /**
+         * Configuration object for cloud service authentication.
+         * 
+         * The option is a:
+         * &lt;code&gt;org.apache.camel.component.huaweicloud.common.models.ServiceKeys&lt;/code&gt; type.
+         * 
+         * Group: producer
+         * 
+         * @param serviceKeys the value to set
+         * @return the dsl builder
+         */
+        default DMSEndpointBuilder serviceKeys(Object serviceKeys) {
+            doSetProperty("serviceKeys", serviceKeys);
+            return this;
+        }
+        /**
+         * Configuration object for cloud service authentication.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;org.apache.camel.component.huaweicloud.common.models.ServiceKeys&lt;/code&gt; type.
+         * 
+         * Group: producer
+         * 
+         * @param serviceKeys the value to set
+         * @return the dsl builder
+         */
+        default DMSEndpointBuilder serviceKeys(String serviceKeys) {
+            doSetProperty("serviceKeys", serviceKeys);
+            return this;
+        }
+    }
+
+    public interface DMSBuilders {
+        /**
+         * Huawei Distributed Message Service (DMS) (camel-huaweicloud-dms)
+         * To integrate with a fully managed, high-performance message queuing
+         * service on Huawei Cloud
+         * 
+         * Category: cloud
+         * Since: 3.12
+         * Maven coordinates: org.apache.camel:camel-huaweicloud-dms
+         * 
+         * Syntax: <code>hwcloud-dms:operation</code>
+         * 
+         * Path parameter: operation (required)
+         * Operation to be performed
+         * 
+         * @param path operation
+         * @return the dsl builder
+         */
+        default DMSEndpointBuilder hwcloudDms(String path) {
+            return DMSEndpointBuilderFactory.endpointBuilder("hwcloud-dms", path);
+        }
+        /**
+         * Huawei Distributed Message Service (DMS) (camel-huaweicloud-dms)
+         * To integrate with a fully managed, high-performance message queuing
+         * service on Huawei Cloud
+         * 
+         * Category: cloud
+         * Since: 3.12
+         * Maven coordinates: org.apache.camel:camel-huaweicloud-dms
+         * 
+         * Syntax: <code>hwcloud-dms:operation</code>
+         * 
+         * Path parameter: operation (required)
+         * Operation to be performed
+         * 
+         * @param componentName to use a custom component name for the endpoint
+         * instead of the default name
+         * @param path operation
+         * @return the dsl builder
+         */
+        default DMSEndpointBuilder hwcloudDms(String componentName, String path) {
+            return DMSEndpointBuilderFactory.endpointBuilder(componentName, path);
+        }
+    }
+    static DMSEndpointBuilder endpointBuilder(String componentName, String path) {
+        class DMSEndpointBuilderImpl extends AbstractEndpointBuilder implements DMSEndpointBuilder {
+            public DMSEndpointBuilderImpl(String path) {
+                super(componentName, path);
+            }
+        }
+        return new DMSEndpointBuilderImpl(path);
+    }
+}
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/hwcloud-dms-component.adoc b/docs/components/modules/ROOT/pages/hwcloud-dms-component.adoc
new file mode 100644
index 0000000..c0f5b21
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/hwcloud-dms-component.adoc
@@ -0,0 +1,178 @@
+[[hwcloud-dms-component]]
+= Huawei Distributed Message Service (DMS) Component
+//THIS FILE IS COPIED: EDIT THE SOURCE FILE:
+:page-source: componentscamel-huaweicamel-huaweicloud-dmssrcmaindocshwcloud-dms-component.adoc
+:docTitle: Huawei Distributed Message Service (DMS)
+:artifactId: camel-huaweicloud-dms
+:description: To integrate with a fully managed, high-performance message queuing service on Huawei Cloud
+:since: 3.12
+:supportLevel: Preview
+:component-header: Only producer is supported
+include::{cq-version}@camel-quarkus:ROOT:partial$reference/components/hwcloud-dms.adoc[opts=optional]
+//Manually maintained attributes
+:group: Huawei Cloud
+
+*Since Camel {since}*
+
+*{component-header}*
+
+
+Huawei Cloud Distributed Message Service (DMS) component allows you to integrate with https://www.huaweicloud.com/intl/en-us/product/dms.html[DMS] provided by Huawei Cloud.
+
+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-huaweicloud-dms</artifactId>
+    <version>x.x.x</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+----
+
+== URI Format
+
+----
+hwcloud-dms:operation[?options]
+----
+
+// component-configure options: START
+== Configuring Options
+
+Camel components are configured on two separate levels:
+
+- component level
+- endpoint level
+
+=== Configuring Component Options
+
+The component level is the highest level which holds general and common configurations that are inherited by the endpoints.
+For example a component may have security settings, credentials for authentication, urls for network connection and so forth.
+
+Some components only have a few options, and others may have many. Because components typically have pre configured defaults
+that are commonly used, then you may often only need to configure a few options on a component; or none at all.
+
+Configuring components can be done with the xref:latest@manual::component-dsl.adoc[Component DSL],
+in a configuration file (application.properties|yaml), or directly with Java code.
+
+=== Configuring Endpoint Options
+
+Where you find yourself configuring the most is on endpoints, as endpoints often have many options, which allows you to
+configure what you need the endpoint to do. The options are also categorized into whether the endpoint is used as consumer (from)
+or as a producer (to), or used for both.
+
+Configuring endpoints is most often done directly in the endpoint URI as path and query parameters. You can also use
+the xref:latest@manual::Endpoint-dsl.adoc[Endpoint DSL] as a _type safe_ way of configuring endpoints.
+
+A good practice when configuring options is to use xref:latest@manual::using-propertyplaceholder.adoc[Property Placeholders],
+which allows to not hardcode urls, port numbers, sensitive information, and other settings.
+In other words placeholders allows to externalize the configuration from your code, and gives more flexibility and reuse.
+
+The following two sections lists all the options, firstly for the component followed by the endpoint.
+// component-configure options: END
+
+// component options: START
+== Component Options
+
+
+The Huawei Distributed Message Service (DMS) component supports 2 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
+| *autowiredEnabled* (advanced) | Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | boolean
+|===
+// component options: END
+
+// endpoint options: START
+== Endpoint Options
+
+The Huawei Distributed Message Service (DMS) endpoint is configured using URI syntax:
+
+----
+hwcloud-dms:operation
+----
+
+with the following path and query parameters:
+
+=== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *operation* | *Required* Operation to be performed |  | String
+|===
+
+
+=== Query Parameters (14 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *authenticationKey* (producer) | *Required* Authentication key for the cloud user |  | String
+| *endpoint* (producer) | DMS url. Carries higher precedence than region parameter based client initialization |  | String
+| *engine* (producer) | The message engine. Either kafka or rabbitmq. If the parameter is not specified, all instances will be queried. There are 2 enums and the value can be one of: kafka, rabbitmq |  | String
+| *ignoreSslVerification* (producer) | Ignore SSL verification | false | boolean
+| *instanceId* (producer) | The id of the instance. This option is mandatory when querying an instance |  | String
+| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
+| *projectId* (producer) | *Required* Cloud project ID |  | String
+| *proxyHost* (producer) | Proxy server ip/hostname |  | String
+| *proxyPassword* (producer) | Proxy authentication password |  | String
+| *proxyPort* (producer) | Proxy server port |  | int
+| *proxyUser* (producer) | Proxy authentication user |  | String
+| *region* (producer) | *Required* DMS service region |  | String
+| *secretKey* (producer) | *Required* Secret key for the cloud user |  | String
+| *serviceKeys* (producer) | Configuration object for cloud service authentication |  | ServiceKeys
+|===
+// endpoint options: END
+
+
+== Usage
+
+=== Message properties evaluated by the DMS producer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelHwCloudDmsOperation` |`String` | Name of operation to invoke
+
+|`CamelHwCloudDmsEngine` |`String` | The message engine. Either kafka or rabbitmq
+
+|`CamelHwCloudDmsInstanceId` |`String` | Instance ID to invoke operation on
+
+|=======================================================================
+
+If any of the above properties are set, they will override their corresponding query parameter.
+
+== List of Supported DMS Operations
+
+- listInstances
+- queryInstance
+
+== Using ServiceKey Configuration Bean
+
+Authentication key and secret keys are required to authenticate against cloud DMS service. You can avoid having them being exposed
+and scattered over in your endpoint uri by wrapping them inside a bean of class `org.apache.camel.component.huaweicloud.common.models.ServiceKeys`.
+Add it to the registry and let Camel look it up by referring the object via endpoint query parameter `serviceKeys`.
+
+Check the following code snippets:
+
+[source,xml]
+----
+<bean id="myServiceKeyConfig" class="org.apache.camel.component.huaweicloud.common.models.ServiceKeys">
+   <property name="authenticationKey" value="your_authentication_key" />
+   <property name="secretKey" value="your_secret_key" />
+</bean>
+----
+[source,java]
+----
+from("direct:triggerRoute")
+ .to("hwcloud-dms:listInstances?region=cn-north-4&serviceKeys=#myServiceKeyConfig")
+----
diff --git a/parent/pom.xml b/parent/pom.xml
index c5bddda..1fee22e 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -1556,6 +1556,11 @@
 			</dependency>
 			<dependency>
 				<groupId>org.apache.camel</groupId>
+				<artifactId>camel-huaweicloud-dms</artifactId>
+				<version>${project.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>org.apache.camel</groupId>
 				<artifactId>camel-huaweicloud-functiongraph</artifactId>
 				<version>${project.version}</version>
 			</dependency>