操作场景
本文以一个 Java 客户端为例,为您介绍将 CMQ 队列迁移至 TDMQ CMQ 版的操作步骤。
迁移原理
![](https://qcloudimg.tencent-cloud.cn/image/document/a316dd061bca19ed92d86feb55db8496.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/a316dd061bca19ed92d86feb55db8496.png)
方案总览
![](https://qcloudimg.tencent-cloud.cn/image/document/07c0649228a5f3ae1d8783289a8aad41.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/07c0649228a5f3ae1d8783289a8aad41.png)
整体流程
1. 在控制台上将 CMQ 的队列和主题元数据迁移至 TDMQ CMQ 版中。
2. 旧的消费者保持不动,消费端新建消费者,接入到 TDMQ CMQ 版的队列中。
3. 生产者停止向原 CMQ 队列生产消息,并切换生产流接入到 TDMQ CMQ 版队列中。
4. 旧的消费者继续消费原 CMQ 队列中的存量消息,消费完成后下线 CMQ 业务消费者。
前提条件
说明
操作步骤
步骤1:迁移元数据
1. 登录 CMQ 控制台。
2. 在左侧导航栏选择队列,选择好地域后,单击页面上方的基础数据迁移。
3. 在弹出的窗口中单击启动,将该地域下的所有队列和主题元数据迁移至 TDMQ CMQ 版中。
![](https://qcloudimg.tencent-cloud.cn/image/document/6d0f9addba0930a958f8a570da34e7f5.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/6d0f9addba0930a958f8a570da34e7f5.png)
4. 迁移完成后,登录 TDMQ 控制台。
5. 在左侧导航栏选择队列服务,选择相同的地域可看到迁移到 TDMQ CMQ 版的队列。
![](https://qcloudimg.tencent-cloud.cn/image/document/d0af24f432399317bc042f3c33a75190.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/d0af24f432399317bc042f3c33a75190.png)
步骤2:新建消费者
1. 在消费端新建一个消费者,并接入到 TDMQ CMQ 版队列中。
Consumer consumer = new Consumer();// 私有网络地址: http://{region}.mqadapter.cmq.tencentyun.com 支持腾讯云私有网络的云服务器内网访问// 公网地址: https://cmq-{region}.public.tencenttdmq.comconsumer.setNameServerAddress("http://****.com");// 设置SecretId,在控制台上获取,必须设置consumer.setSecretId("****");// 设置SecretKey,在控制台上获取,必须设置consumer.setSecretKey("****");// 设置签名方式,可以不设置,默认为SHA1consumer.setSignMethod(ClientConfig.SIGN_METHOD_SHA256);// 批量拉取时最大拉取消息数量,范围为1-16consumer.setBatchPullNumber(16);// 设置没有消息时等待时间,默认10s。可在consumer.receiveMsg等方法中传入具体的等待时间consumer.setPollingWaitSeconds(6);// 设置请求超时时间, 默认3000ms// 如果设置了没有消息时等待时间为6s,超时时间为5000ms,则最终超时时间为(6*1000+5000)msconsumer.setRequestTimeoutMS(5000);// 消息拉取的队列名称final String queue = "****";
NameServerAddress:API 调用地址,在 TDMQ CMQ 版控制台 的队列服务 > API请求地址处复制。
![](https://qcloudimg.tencent-cloud.cn/image/document/f138e7265b734106e4d78f62b5373e79.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/f138e7265b734106e4d78f62b5373e79.png)
SecretId、SecretKey:云API密钥,登录 访问管理控制台,在访问密钥 > API密钥管理页面复制。
![](https://qcloudimg.tencent-cloud.cn/image/document/c8a7d40d94398e228e7012a5b12a87b3.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/c8a7d40d94398e228e7012a5b12a87b3.png)
queue:填写队列名称。
2. 运行代码,查看消费端服务是否能正常运行无报错。
3. 通过 TDMQ CMQ 版控制台 的队列服务 > 发送消息向消息接收侧发送测试消息,验证消费者服务是否可以正常消费。
![](https://qcloudimg.tencent-cloud.cn/image/document/f52da87bc96db99b1edb1535d7c76406.png)
如图则为正常消费:
![](https://qcloudimg.tencent-cloud.cn/image/document/35d82e2e3ac3b56340ba97a3c70c86e6.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/f52da87bc96db99b1edb1535d7c76406.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/35d82e2e3ac3b56340ba97a3c70c86e6.png)
步骤3:切换生产流
1. 将原生产者的 NameServer 修改为 TDMQ CMQ 版队列的接入地址,在 TDMQ CMQ 版控制台的队列服务 > API请求地址处复制。
2. 运行生产消息程序,验证生产者服务是否可以正常发送消息。
![](https://qcloudimg.tencent-cloud.cn/image/document/3c60ce16dcf629402bacdc6369dcb4ae.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/3c60ce16dcf629402bacdc6369dcb4ae.png)
步骤4:下线旧消费者
等待旧的消费者继续消费完原 CMQ 队列中的存量消息后,下线 CMQ 业务消费者。
![](https://qcloudimg.tencent-cloud.cn/image/document/744cf512825526f678cfec15e404437e.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/744cf512825526f678cfec15e404437e.png)