文档中心 > 消息队列 CMQ > 迁移说明 > CMQ 队列迁移至 TDMQ CMQ 版

CMQ 队列迁移至 TDMQ CMQ 版

最近更新时间:2021-09-23 10:38:32

操作场景

本文以一个 Java 客户端为例,为您介绍将 CMQ 队列迁移至 TDMQ CMQ 版的操作步骤。

迁移原理

方案总览

整体流程

  • 1在控制台上将 CMQ 的队列和主题元数据迁移至 TDMQ CMQ 版中。
  • 2旧的消费者保持不动,消费端新建消费者,接入到 TDMQ CMQ 版的队列中。
  • 3生产者停止向原 CMQ 队列生产消息,并切换生产流接入到 TDMQ CMQ 版队列中。
  • 4旧的消费者继续消费原 CMQ 队列中的存量消息,消费完成后下线 CMQ 业务消费者。

前提条件

参考 SDK 文档部署好 CMQ 队列的生产端和消费端服务,并且运行正常。以下迁移步骤以 TCP SDK 为例。

操作步骤

步骤1:迁移元数据

  1. 登录 CMQ 控制台
  2. 在左侧导航栏选择队列,选择好地域后,单击页面上方的同步到 TDMQ
  3. 在弹出的窗口中单击启动,将该地域下的所有队列和主题元数据迁移至 TDMQ CMQ 版中。
  4. 迁移完成后,登录 TDMQ 控制台
  5. 在左侧导航栏选择队列服务,选择相同的地域可看到迁移到 TDMQ CMQ 版的队列。

步骤2:新建消费者

  1. 在消费端新建一个消费者,并接入到 TDMQ CMQ 版队列中。

    Consumer consumer = new Consumer();
            // 私有网络地址: http://{region}.mqadapter.cmq.tencentyun.com 支持腾讯云私有网络的云服务器内网访问
            // 公网地址:    https://cmq-{region}.public.tencenttdmq.com
            consumer.setNameServerAddress("http://****.com");
            // 设置SecretId,在控制台上获取,必须设置
            consumer.setSecretId("****");
            // 设置SecretKey,在控制台上获取,必须设置
            consumer.setSecretKey("****");
            // 设置签名方式,可以不设置,默认为SHA1
            consumer.setSignMethod(ClientConfig.SIGN_METHOD_SHA256);
            // 批量拉取时最大拉取消息数量,范围为1-16
            consumer.setBatchPullNumber(16);
            // 设置没有消息时等待时间,默认10s。可在consumer.receiveMsg等方法中传入具体的等待时间
            consumer.setPollingWaitSeconds(6);
            // 设置请求超时时间, 默认3000ms
            // 如果设置了没有消息时等待时间为6s,超时时间为5000ms,则最终超时时间为(6*1000+5000)ms
            consumer.setRequestTimeoutMS(5000);
            // 消息拉取的队列名称
            final String queue = "****";

    • NameServerAddress:API 调用地址,在 TDMQ CMQ 版控制台队列服务 > API请求地址处复制。

    • SecretId、SecretKey:云API密钥,登录 访问管理控制台,在访问密钥 > API密钥管理页面复制。

    • queue:填写队列名称。

  2. 运行代码,查看消费端服务是否能正常运行无报错。

  3. 通过 TDMQ CMQ 版控制台队列服务 > 发送消息向消息接收侧发送测试消息,验证消费者服务是否可以正常消费。

    如图则为正常消费:

步骤3:切换生产流

  1. 将原生产者的 NameServer 修改为 TDMQ CMQ 版队列的接入地址,在 TDMQ CMQ 版控制台队列服务 > API请求地址处复制。
  2. 运行生产消息程序,验证生产者服务是否可以正常发送消息。

步骤4:下线旧消费者

等待旧的消费者继续消费完原 CMQ 队列中的存量消息后,下线 CMQ 业务消费者。

CMQ 控制台队列服务 > 队列 > 监控页面可查看 CMQ 队列中堆积的消息数量,当堆积消息数量为0时,代表原 CMQ 队列中的存量消息已被消费完成。

目录