Updated on 2026-08-19 GMT+08:00

Creating a Metadata Migration Task

Function

This API is used to create a metadata migration task.

Calling Method

For details, see Calling APIs.

URI

POST /v2/{project_id}/instances/{instance_id}/metadata

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Definition

Project ID. For details about how to obtain it, see Obtaining a Project ID.

Constraints

N/A

Range

N/A

Default Value

N/A

instance_id

Yes

String

Definition

Instance ID. You can call the API for querying all instances to obtain the instance ID. The instance ID is in the response body.

Constraints

N/A

Range

N/A

Default Value

N/A

Table 2 Query Parameters

Parameter

Mandatory

Type

Description

overwrite

Yes

String

Definition

Whether to enable the overwrite function.

Constraints

N/A

Range

  • true: The overwrite function is enabled. If the configurations in the metadata file have the same name as those in the updated file, they will be overwritten.

  • false: The overwrite function is disabled. If a topic or group already exists, an error will be reported.

Default Value

N/A

name

Yes

String

Definition

Name of the migration task.

Constraints

Starts with a letter, consists of 4 to 64 characters, and contains only letters, digits, hyphens (-), and underscores (_).

Range

N/A

Default Value

N/A

type

Yes

String

Definition

Migration task type.

Constraints

N/A

Range

  • rocketmq: Migrate self-built RocketMQ instances to the cloud.

  • rabbitToRocket: Migrate metadata from RabbitMQ to RocketMQ.

Default Value

N/A

Request Parameters

Table 3 Request body parameters

Parameter

Mandatory

Type

Description

topic_config_table

No

Map<String,MigrationRocketMqTopicConfig>

Definition

RocketMQ topic metadata. The key is the topic name, and the value is the topic configuration.

Constraints

This parameter is mandatory when the migration task type is rocketmq.

Range

N/A

Default Value

N/A

subscription_group_table

No

Map<String,MigrationRocketMqSubscriptionGroup>

Definition

RocketMQ consumer group metadata. The key is the consumer group name, and the value is the consumer group configuration.

Constraints

This parameter is mandatory when the migration task type is rocketmq.

Range

N/A

Default Value

N/A

vhosts

No

Array of MigrationRabbitVhostMetadata objects

Definition

RabbitMQ virtual host metadata list.

Constraints

This parameter is mandatory when the migration task type is rabbitToRocket.

Range

N/A

Default Value

N/A

queues

No

Array of MigrationRabbitQueueMetadata objects

Definition

RabbitMQ queue metadata list.

Constraints

This parameter is mandatory when the migration task type is rabbitToRocket.

Range

N/A

Default Value

N/A

exchanges

No

Array of MigrationRabbitExchangeMetadata objects

Definition

RabbitMQ exchange metadata list.

Constraints

This parameter is mandatory when the migration task type is rabbitToRocket.

Range

N/A

Default Value

N/A

bindings

No

Array of MigrationRabbitBindingMetadata objects

Definition

RabbitMQ binding metadata list.

Constraints

This parameter is mandatory when the migration task type is rabbitToRocket.

Range

N/A

Default Value

N/A

Table 4 MigrationRocketMqTopicConfig

Parameter

Mandatory

Type

Description

topic_name

No

String

Definition

Topic name.

Constraints

Enter 3 to 64 characters. Use only letters, digits, percent (%), vertical bars (|), hyphens (-), and underscores (_).

Range

N/A

Default Value

N/A

order

No

Boolean

Definition

Whether messages are ordered.

Constraints

N/A

Range

  • true: Yes

  • false" No

Default Value

false

perm

No

Integer

Definition

Topic permissions.

Constraints

N/A

Range

  • 4: publish permissions.

  • 2: subscription permissions.

  • 6: publish and subscription permissions.

  • 0: no permission.

Default Value

6

read_queue_nums

No

Integer

Definition

Number of read queues.

Constraints

N/A

Range

N/A

Default Value

16

write_queue_nums

No

Integer

Definition

Number of write queues.

Constraints

N/A

Range

N/A

Default Value

16

topic_filter_type

No

String

Definition

Topic filtering type.

Constraints

N/A

Range

  • SINGLE_TAG: single tag.

  • MULTI_TAG: multiple tags.

Default Value

N/A

topic_sys_flag

No

Integer

Definition

Topic system flag.

Constraints

N/A

Range

N/A

Default Value

0

Table 5 MigrationRocketMqSubscriptionGroup

Parameter

Mandatory

Type

Description

group_name

No

String

Definition

Consumer group name.

Constraints

Enter 3 to 64 characters. Use only letters, digits, percent (%), vertical bars (|), hyphens (-), and underscores (_).

Range

N/A

Default Value

N/A

consume_broadcast_enable

No

Boolean

Definition

Whether to allow broadcast.

Constraints

N/A

Range

  • true: Yes

  • false: No

Default Value

N/A

consume_enable

No

Boolean

Definition

Whether to enable consumption.

Constraints

N/A

Range

  • true: Yes

  • false: No

Default Value

true

consume_from_min_enable

No

Boolean

Definition

Whether to enable consumption from the earliest offset.

Constraints

N/A

Range

  • true: Yes

  • false: No

Default Value

true

notify_consumer_ids_changed_enable

No

Boolean

Definition

Whether to notify consumer ID changes.

Constraints

N/A

Range

  • true: Yes

  • false: No

Default Value

true

retry_max_times

No

Integer

Definition

Maximum number of consumption retries.

Constraints

N/A

Range

1–16

Default Value

16

retry_queue_nums

No

Integer

Definition

Number of retry queues.

Constraints

N/A

Range

N/A

Default Value

1

which_broker_when_consume_slow

No

Long

Definition

ID of the broker selected for slow consumption.

Constraints

N/A

Range

N/A

Default Value

1

Table 6 MigrationRabbitVhostMetadata

Parameter

Mandatory

Type

Description

name

No

String

Definition

Virtual host name.

Constraints

N/A

Range

N/A

Default Value

N/A

Table 7 MigrationRabbitQueueMetadata

Parameter

Mandatory

Type

Description

vhost

No

String

Definition

Virtual host name.

Constraints

N/A

Range

N/A

Default Value

N/A

name

No

String

Definition

Queue name.

Constraints

N/A

Range

N/A

Default Value

N/A

durable

No

Boolean

Definition

Whether to enable data persistence.

Constraints

N/A

Range

  • true: Yes

  • false: No

Default Value

N/A

Table 8 MigrationRabbitExchangeMetadata

Parameter

Mandatory

Type

Description

vhost

No

String

Definition

Virtual host name.

Constraints

N/A

Range

N/A

Default Value

N/A

name

No

String

Definition

Exchange name.

Constraints

N/A

Range

N/A

Default Value

N/A

type

No

String

Definition

Exchange type.

Constraints

N/A

Range

  • topic: Fuzzy match by routing key is supported.

  • direct: Messages are routed in exact match by routing key.

  • fanout: broadcast mode. Messages are sent to all bound queues, regardless of routing keys.

  • headers: Routing is based on the key-value pair in the message header (headers) instead of on the routing key.

Default Value

N/A

durable

No

Boolean

Definition

Whether to enable data persistence.

Constraints

N/A

Range

  • true: Yes

  • false: No

Default Value

N/A

Table 9 MigrationRabbitBindingMetadata

Parameter

Mandatory

Type

Description

vhost

No

String

Definition

Virtual host name.

Constraints

N/A

Range

N/A

Default Value

N/A

source

No

String

Definition

Message source.

Constraints

N/A

Range

N/A

Default Value

N/A

destination

No

String

Definition

Message target.

Constraints

N/A

Range

N/A

Default Value

N/A

destination_type

No

String

Definition

Target type.

Constraints

N/A

Range

  • exchange

  • queue RabbitMQ AMQP only supports queue bindings.

Default Value

N/A

routing_key

No

String

Definition

Routing key.

Constraints

N/A

Range

N/A

Default Value

N/A

Response Parameters

Status code: 200

Table 10 Response body parameters

Parameter

Type

Description

task_id

String

Definition

Task ID.

Range

N/A

Example Requests

  • Creating a metadata migration task to migrate the metadata from other vendors' or self-built RocketMQ instances to DMS for RocketMQ.

    POST https://{endpoint}/v2/{project_id}/instances/{instance_id}/metadata?overwrite=true&name=task-123&type=rocketmq
    
    {
      "topic_config_table" : {
        "topic-test1" : {
          "order" : false,
          "perm" : 6,
          "read_queue_nums" : 3,
          "topic_filter_type" : "SINGLE_TAG",
          "topic_name" : "topic-test1",
          "topic_sys_flag" : 0,
          "write_queue_nums" : 3
        }
      },
      "subscription_group_table" : {
        "group-test1" : {
          "consume_broadcast_enable" : true,
          "consume_enable" : true,
          "consume_from_min_enable" : true,
          "group_name" : "group-test1",
          "notify_consumer_ids_changed_enable" : true,
          "retry_max_times" : 2,
          "retry_queue_nums" : 1,
          "which_broker_when_consume_slow" : 1
        }
      }
    }
  • Creating a metadata migration task to migrate the metadata of RabbitMQ instances to DMS for RocketMQ.

    POST https://{endpoint}/v2/{project_id}/instances/{instance_id}/metadata?overwrite=true&name=task-123&type=rabbitToRocket
    
    {
      "vhosts" : [ {
        "name" : "DeleteVhost123"
      } ],
      "queues" : [ {
        "name" : "test-001",
        "vhost" : "/",
        "durable" : false
      } ],
      "exchanges" : [ {
        "name" : "direct",
        "vhost" : "/",
        "type" : "topic",
        "durable" : false
      } ],
      "bindings" : [ {
        "source" : "direct",
        "vhost" : "/",
        "destination" : "test-001",
        "destination_type" : "queue",
        "routing_key" : "test-001"
      } ]
    }

Example Responses

Status code: 200

Successful

{
  "task_id" : "6cf4dcd3-8471-4139-8b5b-8a3a71f704c7"
}

SDK Sample Code

The SDK sample code is as follows.

  • Creating a metadata migration task to migrate the metadata from other vendors' or self-built RocketMQ instances to DMS for RocketMQ.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    package com.huaweicloud.sdk.test;
    
    import com.huaweicloud.sdk.core.auth.ICredential;
    import com.huaweicloud.sdk.core.auth.BasicCredentials;
    import com.huaweicloud.sdk.core.exception.ConnectionException;
    import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
    import com.huaweicloud.sdk.core.exception.ServiceResponseException;
    import com.huaweicloud.sdk.rocketmq.v2.region.RocketMQRegion;
    import com.huaweicloud.sdk.rocketmq.v2.*;
    import com.huaweicloud.sdk.rocketmq.v2.model.*;
    
    import java.util.Map;
    import java.util.HashMap;
    
    public class CreateRocketMqMigrationTaskSolution {
    
        public static void main(String[] args) {
            // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
            // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
            String ak = System.getenv("CLOUD_SDK_AK");
            String sk = System.getenv("CLOUD_SDK_SK");
            String projectId = "{project_id}";
    
            ICredential auth = new BasicCredentials()
                    .withProjectId(projectId)
                    .withAk(ak)
                    .withSk(sk);
    
            RocketMQClient client = RocketMQClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(RocketMQRegion.valueOf("<YOUR REGION>"))
                    .build();
            CreateRocketMqMigrationTaskRequest request = new CreateRocketMqMigrationTaskRequest();
            request.withInstanceId("{instance_id}");
            CreateRocketMqMigrationTaskReq body = new CreateRocketMqMigrationTaskReq();
            MigrationRocketMqSubscriptionGroup subscriptionGroupTableSubscriptionGroupTable = new MigrationRocketMqSubscriptionGroup();
            subscriptionGroupTableSubscriptionGroupTable.withGroupName("group-test1")
                .withConsumeBroadcastEnable(true)
                .withConsumeEnable(true)
                .withConsumeFromMinEnable(true)
                .withNotifyConsumerIdsChangedEnable(true)
                .withRetryMaxTimes(2)
                .withRetryQueueNums(1)
                .withWhichBrokerWhenConsumeSlow(1L);
            Map<String, MigrationRocketMqSubscriptionGroup> listbodySubscriptionGroupTable = new HashMap<>();
            listbodySubscriptionGroupTable.put("group-test1", subscriptionGroupTableSubscriptionGroupTable);
            MigrationRocketMqTopicConfig topicConfigTableTopicConfigTable = new MigrationRocketMqTopicConfig();
            topicConfigTableTopicConfigTable.withTopicName("topic-test1")
                .withOrder(false)
                .withPerm(6)
                .withReadQueueNums(3)
                .withWriteQueueNums(3)
                .withTopicFilterType("SINGLE_TAG")
                .withTopicSysFlag(0);
            Map<String, MigrationRocketMqTopicConfig> listbodyTopicConfigTable = new HashMap<>();
            listbodyTopicConfigTable.put("topic-test1", topicConfigTableTopicConfigTable);
            body.withSubscriptionGroupTable(listbodySubscriptionGroupTable);
            body.withTopicConfigTable(listbodyTopicConfigTable);
            request.withBody(body);
            try {
                CreateRocketMqMigrationTaskResponse response = client.createRocketMqMigrationTask(request);
                System.out.println(response.toString());
            } catch (ConnectionException e) {
                e.printStackTrace();
            } catch (RequestTimeoutException e) {
                e.printStackTrace();
            } catch (ServiceResponseException e) {
                e.printStackTrace();
                System.out.println(e.getHttpStatusCode());
                System.out.println(e.getRequestId());
                System.out.println(e.getErrorCode());
                System.out.println(e.getErrorMsg());
            }
        }
    }
    
  • Creating a metadata migration task to migrate the metadata of RabbitMQ instances to DMS for RocketMQ.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    package com.huaweicloud.sdk.test;
    
    import com.huaweicloud.sdk.core.auth.ICredential;
    import com.huaweicloud.sdk.core.auth.BasicCredentials;
    import com.huaweicloud.sdk.core.exception.ConnectionException;
    import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
    import com.huaweicloud.sdk.core.exception.ServiceResponseException;
    import com.huaweicloud.sdk.rocketmq.v2.region.RocketMQRegion;
    import com.huaweicloud.sdk.rocketmq.v2.*;
    import com.huaweicloud.sdk.rocketmq.v2.model.*;
    
    import java.util.List;
    import java.util.ArrayList;
    
    public class CreateRocketMqMigrationTaskSolution {
    
        public static void main(String[] args) {
            // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
            // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
            String ak = System.getenv("CLOUD_SDK_AK");
            String sk = System.getenv("CLOUD_SDK_SK");
            String projectId = "{project_id}";
    
            ICredential auth = new BasicCredentials()
                    .withProjectId(projectId)
                    .withAk(ak)
                    .withSk(sk);
    
            RocketMQClient client = RocketMQClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(RocketMQRegion.valueOf("<YOUR REGION>"))
                    .build();
            CreateRocketMqMigrationTaskRequest request = new CreateRocketMqMigrationTaskRequest();
            request.withInstanceId("{instance_id}");
            CreateRocketMqMigrationTaskReq body = new CreateRocketMqMigrationTaskReq();
            List<MigrationRabbitBindingMetadata> listbodyBindings = new ArrayList<>();
            listbodyBindings.add(
                new MigrationRabbitBindingMetadata()
                    .withVhost("/")
                    .withSource("direct")
                    .withDestination("test-001")
                    .withDestinationType("queue")
                    .withRoutingKey("test-001")
            );
            List<MigrationRabbitExchangeMetadata> listbodyExchanges = new ArrayList<>();
            listbodyExchanges.add(
                new MigrationRabbitExchangeMetadata()
                    .withVhost("/")
                    .withName("direct")
                    .withType("topic")
                    .withDurable(false)
            );
            List<MigrationRabbitQueueMetadata> listbodyQueues = new ArrayList<>();
            listbodyQueues.add(
                new MigrationRabbitQueueMetadata()
                    .withVhost("/")
                    .withName("test-001")
                    .withDurable(false)
            );
            List<MigrationRabbitVhostMetadata> listbodyVhosts = new ArrayList<>();
            listbodyVhosts.add(
                new MigrationRabbitVhostMetadata()
                    .withName("DeleteVhost123")
            );
            body.withBindings(listbodyBindings);
            body.withExchanges(listbodyExchanges);
            body.withQueues(listbodyQueues);
            body.withVhosts(listbodyVhosts);
            request.withBody(body);
            try {
                CreateRocketMqMigrationTaskResponse response = client.createRocketMqMigrationTask(request);
                System.out.println(response.toString());
            } catch (ConnectionException e) {
                e.printStackTrace();
            } catch (RequestTimeoutException e) {
                e.printStackTrace();
            } catch (ServiceResponseException e) {
                e.printStackTrace();
                System.out.println(e.getHttpStatusCode());
                System.out.println(e.getRequestId());
                System.out.println(e.getErrorCode());
                System.out.println(e.getErrorMsg());
            }
        }
    }
    
  • Creating a metadata migration task to migrate the metadata from other vendors' or self-built RocketMQ instances to DMS for RocketMQ.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    # coding: utf-8
    
    import os
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdkrocketmq.v2.region.rocketmq_region import RocketMQRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkrocketmq.v2 import *
    
    if __name__ == "__main__":
        # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId)
    
        client = RocketMQClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(RocketMQRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = CreateRocketMqMigrationTaskRequest()
            request.instance_id = "{instance_id}"
            subscriptionGroupTableSubscriptionGroupTable = MigrationRocketMqSubscriptionGroup(
                group_name="group-test1",
                consume_broadcast_enable=True,
                consume_enable=True,
                consume_from_min_enable=True,
                notify_consumer_ids_changed_enable=True,
                retry_max_times=2,
                retry_queue_nums=1,
                which_broker_when_consume_slow=1
            )
            listSubscriptionGroupTablebody = {
                "group-test1": subscriptionGroupTableSubscriptionGroupTable
            }
            topicConfigTableTopicConfigTable = MigrationRocketMqTopicConfig(
                topic_name="topic-test1",
                order=False,
                perm=6,
                read_queue_nums=3,
                write_queue_nums=3,
                topic_filter_type="SINGLE_TAG",
                topic_sys_flag=0
            )
            listTopicConfigTablebody = {
                "topic-test1": topicConfigTableTopicConfigTable
            }
            request.body = CreateRocketMqMigrationTaskReq(
                subscription_group_table=listSubscriptionGroupTablebody,
                topic_config_table=listTopicConfigTablebody
            )
            response = client.create_rocket_mq_migration_task(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Creating a metadata migration task to migrate the metadata of RabbitMQ instances to DMS for RocketMQ.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    # coding: utf-8
    
    import os
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdkrocketmq.v2.region.rocketmq_region import RocketMQRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkrocketmq.v2 import *
    
    if __name__ == "__main__":
        # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId)
    
        client = RocketMQClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(RocketMQRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = CreateRocketMqMigrationTaskRequest()
            request.instance_id = "{instance_id}"
            listBindingsbody = [
                MigrationRabbitBindingMetadata(
                    vhost="/",
                    source="direct",
                    destination="test-001",
                    destination_type="queue",
                    routing_key="test-001"
                )
            ]
            listExchangesbody = [
                MigrationRabbitExchangeMetadata(
                    vhost="/",
                    name="direct",
                    type="topic",
                    durable=False
                )
            ]
            listQueuesbody = [
                MigrationRabbitQueueMetadata(
                    vhost="/",
                    name="test-001",
                    durable=False
                )
            ]
            listVhostsbody = [
                MigrationRabbitVhostMetadata(
                    name="DeleteVhost123"
                )
            ]
            request.body = CreateRocketMqMigrationTaskReq(
                bindings=listBindingsbody,
                exchanges=listExchangesbody,
                queues=listQueuesbody,
                vhosts=listVhostsbody
            )
            response = client.create_rocket_mq_migration_task(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Creating a metadata migration task to migrate the metadata from other vendors' or self-built RocketMQ instances to DMS for RocketMQ.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        rocketmq "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rocketmq/v2"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rocketmq/v2/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rocketmq/v2/region"
    )
    
    func main() {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak := os.Getenv("CLOUD_SDK_AK")
        sk := os.Getenv("CLOUD_SDK_SK")
        projectId := "{project_id}"
    
        auth, err := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            SafeBuild()
    
        if err != nil {
            fmt.Println(err)
            return
        }
    
        hcClient, err := rocketmq.RocketMQClientBuilder().
             WithRegion(region.ValueOf("<YOUR REGION>")).
             WithCredential(auth).
             SafeBuild()
    
    
        if err != nil {
            fmt.Println(err)
            return
        }
    
        client := rocketmq.NewRocketMQClient(hcClient)
    
        request := &model.CreateRocketMqMigrationTaskRequest{}
    	request.InstanceId = "{instance_id}"
    	groupNameSubscriptionGroupTable:= "group-test1"
    	consumeBroadcastEnableSubscriptionGroupTable:= true
    	consumeEnableSubscriptionGroupTable:= true
    	consumeFromMinEnableSubscriptionGroupTable:= true
    	notifyConsumerIdsChangedEnableSubscriptionGroupTable:= true
    	retryMaxTimesSubscriptionGroupTable:= int32(2)
    	retryQueueNumsSubscriptionGroupTable:= int32(1)
    	whichBrokerWhenConsumeSlowSubscriptionGroupTable:= int64(1)
    	subscriptionGroupTableSubscriptionGroupTable := model.MigrationRocketMqSubscriptionGroup{
    		GroupName: &groupNameSubscriptionGroupTable,
    		ConsumeBroadcastEnable: &consumeBroadcastEnableSubscriptionGroupTable,
    		ConsumeEnable: &consumeEnableSubscriptionGroupTable,
    		ConsumeFromMinEnable: &consumeFromMinEnableSubscriptionGroupTable,
    		NotifyConsumerIdsChangedEnable: &notifyConsumerIdsChangedEnableSubscriptionGroupTable,
    		RetryMaxTimes: &retryMaxTimesSubscriptionGroupTable,
    		RetryQueueNums: &retryQueueNumsSubscriptionGroupTable,
    		WhichBrokerWhenConsumeSlow: &whichBrokerWhenConsumeSlowSubscriptionGroupTable,
    	}
    	var listSubscriptionGroupTablebody = map[string](model.MigrationRocketMqSubscriptionGroup){
            "group-test1": subscriptionGroupTableSubscriptionGroupTable,
        }
    	topicNameTopicConfigTable:= "topic-test1"
    	orderTopicConfigTable:= false
    	permTopicConfigTable:= int32(6)
    	readQueueNumsTopicConfigTable:= int32(3)
    	writeQueueNumsTopicConfigTable:= int32(3)
    	topicFilterTypeTopicConfigTable:= "SINGLE_TAG"
    	topicSysFlagTopicConfigTable:= int32(0)
    	topicConfigTableTopicConfigTable := model.MigrationRocketMqTopicConfig{
    		TopicName: &topicNameTopicConfigTable,
    		Order: &orderTopicConfigTable,
    		Perm: &permTopicConfigTable,
    		ReadQueueNums: &readQueueNumsTopicConfigTable,
    		WriteQueueNums: &writeQueueNumsTopicConfigTable,
    		TopicFilterType: &topicFilterTypeTopicConfigTable,
    		TopicSysFlag: &topicSysFlagTopicConfigTable,
    	}
    	var listTopicConfigTablebody = map[string](model.MigrationRocketMqTopicConfig){
            "topic-test1": topicConfigTableTopicConfigTable,
        }
    	request.Body = &model.CreateRocketMqMigrationTaskReq{
    		SubscriptionGroupTable: listSubscriptionGroupTablebody,
    		TopicConfigTable: listTopicConfigTablebody,
    	}
    	response, err := client.CreateRocketMqMigrationTask(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • Creating a metadata migration task to migrate the metadata of RabbitMQ instances to DMS for RocketMQ.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        rocketmq "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rocketmq/v2"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rocketmq/v2/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rocketmq/v2/region"
    )
    
    func main() {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak := os.Getenv("CLOUD_SDK_AK")
        sk := os.Getenv("CLOUD_SDK_SK")
        projectId := "{project_id}"
    
        auth, err := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            SafeBuild()
    
        if err != nil {
            fmt.Println(err)
            return
        }
    
        hcClient, err := rocketmq.RocketMQClientBuilder().
             WithRegion(region.ValueOf("<YOUR REGION>")).
             WithCredential(auth).
             SafeBuild()
    
    
        if err != nil {
            fmt.Println(err)
            return
        }
    
        client := rocketmq.NewRocketMQClient(hcClient)
    
        request := &model.CreateRocketMqMigrationTaskRequest{}
    	request.InstanceId = "{instance_id}"
    	vhostBindings:= "/"
    	sourceBindings:= "direct"
    	destinationBindings:= "test-001"
    	destinationTypeBindings:= "queue"
    	routingKeyBindings:= "test-001"
    	var listBindingsbody = []model.MigrationRabbitBindingMetadata{
            {
                Vhost: &vhostBindings,
                Source: &sourceBindings,
                Destination: &destinationBindings,
                DestinationType: &destinationTypeBindings,
                RoutingKey: &routingKeyBindings,
            },
        }
    	vhostExchanges:= "/"
    	nameExchanges:= "direct"
    	typeExchanges:= "topic"
    	durableExchanges:= false
    	var listExchangesbody = []model.MigrationRabbitExchangeMetadata{
            {
                Vhost: &vhostExchanges,
                Name: &nameExchanges,
                Type: &typeExchanges,
                Durable: &durableExchanges,
            },
        }
    	vhostQueues:= "/"
    	nameQueues:= "test-001"
    	durableQueues:= false
    	var listQueuesbody = []model.MigrationRabbitQueueMetadata{
            {
                Vhost: &vhostQueues,
                Name: &nameQueues,
                Durable: &durableQueues,
            },
        }
    	nameVhosts:= "DeleteVhost123"
    	var listVhostsbody = []model.MigrationRabbitVhostMetadata{
            {
                Name: &nameVhosts,
            },
        }
    	request.Body = &model.CreateRocketMqMigrationTaskReq{
    		Bindings: &listBindingsbody,
    		Exchanges: &listExchangesbody,
    		Queues: &listQueuesbody,
    		Vhosts: &listVhostsbody,
    	}
    	response, err := client.CreateRocketMqMigrationTask(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    

For SDK sample code of more programming languages, see the Sample Code tab in API Explorer. SDK sample code can be automatically generated.

Status Codes

Status Code

Description

200

Successful

Error Codes

See Error Codes.