存在一个老RocketMQ要迁移到新RocketMQ(比如阿里云切换到腾讯云)
大致方案:
1、消费端增加双重消费(即消费“老MQ”也消费“新MQ”),生产端照样生产到“老MQ”
双重消费代码,比较繁琐,每个Consumer新增一个类继承,然后使用rocketmq2的配置,rocketmq2配置对应新MQ
@Component
@RocketMQMessageListener(
nameServer = "${rocketmq2.name-server}",
accessKey = "${rocketmq2.consumer.access-key}",
secretKey = "${rocketmq2.consumer.secret-key}",
consumerGroup = "group_xxx",
topic = "topic_xxx"
)
public class XxxConsumerMigrate extends XxxConsumer {
}
2、生产端切换生产到“新MQ”(调换rocketmq和rocketmq2的配置,生产端一般都是直接读取的rocketmq配置,直接调换就实现生产端的切换)
3、消费端恢复单消费(删掉Migrate类,删除rocketmq2配置)
以上每个步骤对应1次发版,需要注意的就是不同应用之间的切换时间协调