本文介绍如何将消息收发服务从开源RocketMQ迁移到阿里云的消息队列RocketMQ版上,实现业务上云的平滑迁移。

背景信息

迁移消息服务指的是在元数据迁移完成后,通过手动修改生产者集群和消费者集群的接入信息,将生产者集群和消费者集群从开源RocketMQ切换到阿里云消息队列RocketMQ版的实例上,最终实现所有的消息收发业务都在消息队列RocketMQ版实例上进行。

迁移消息服务只迁移消息生产和消费链路,并不会迁移开源RocketMQ上的消息数据。

本文主要介绍使用双读双写、分批发布方案迁移消息服务的方法。迁移过程中,生产者集群和消费者集群可并行在开源RocketMQ集群和消息队列RocketMQ版集群上同时生产或消费消息,不会因迁移产生数据积压,业务可平滑过渡。具体方案和操作流程,请参见下文中的迁移消息服务

前提条件

已将开源RocketMQ的元数据迁移到消息队列RocketMQ版实例上,具体操作,请参见步骤三:迁移元数据

迁移消息服务

消息服务切换流程和步骤如下所示:迁移方案
说明 以下操作中,切换消费者集群节点或生产者集群节点的接入信息,指的是将生产者或消费者客户端的接入信息修改为要迁移的目标消息队列RocketMQ版实例的接入信息。包括消息队列RocketMQ版实例的接入点、实例所属账号的AccessKeyAccessKey Secret
  1. 切换消费者集群中部分节点的接入信息,将这部分消费者接入到云上的消息队列RocketMQ版
    切换的这部分消费者将消费消息队列RocketMQ版集群中的消息,剩余消费者继续消费开源RocketMQ集群中的消息。
  2. 切换生产者集群中部分节点的接入信息,将这部分生产者接入到云上消息队列RocketMQ版
    切换的这部分生产者将发送消息到消息队列RocketMQ版集群中;剩余的生产者还是将消息发送到开源RocketMQ集群中。
  3. 将剩余的生产者全部接入到消息队列RocketMQ版上。
    此时所有消息将全部被发送到云上的消息队列RocketMQ版集群中。
  4. 将剩余的消费者全部接入到消息队列RocketMQ版上。
    注意 切换剩余消费者之前,请确保开源RocketMQ中的消息已全部消费完,否则可能会导致消费遗漏。您可以通过查看开源RocketMQ中的消息堆积量来判断消息是否消费完成。
    此时所有的生产者和消费者都迁移到消息队列RocketMQ版集群上,所有的消息收发都在消息队列RocketMQ版集群中完成。