RabbitMQ——使用Shovel插件迁移数据

 

前言

公司的RabbitMQ集群要升级最新稳定版本,升级方案:新搭建一套集群,将数据迁移到新的集群,应用连接到新的集群。

因为系统可以接受短暂停机时间,所以采用Shovel插件将旧集群的数据迁移到新集群。经过分析,需要迁移的数据主要有两种:

  • 队列中积压的消息;
  • 延迟队列的消息;

 

安装插件

  • 启动插件

新集群中的每一台服务器上,执行以下命令启动shovel插件:

rabbitmq-plugins enable rabbitmq_shovel
rabbitmq-plugins enable rabbitmq_shovel_management
  • 验证插件

进入管理界面的Admin页签下面,检查是否有如下2个菜单,如有说明启动成功。

 

配置

以下操作,通过rabbitMQ的管理界面进行操作。

  • 创建exchange&queue(旧集群)

1、创建交换器exchange:

Name:shovel_demo_exchange
Arguments:x-delayed-type:direct

2、 创建队列queue:

Name:shovel_demo_queue

 3、绑定路由bind:

To queue:shovel_demo_queue
Routing Key:shovel_demo_queue_routingKey

如上图所示,输入刚才创建的shovel_demo_exchange,按回车过滤查询,然后点击列表中的名称链接,进入下图的详细界面:

  • 创建exchange&queue(新集群)

创建方法及名称跟旧集群一模一样,全部名称和配置都要一样。

  • 旧集群中发送消息

1、进入发送界面:

2、输入信息发送:

3、发送完成提示:

4、重复上面的操作,再发送2条消息,总共有3条消息。

5、查看积压的消息:

 

迁移数据

  • 新集群创建shovel连接

1、打开新集群的管理界面,进入Admin页签,点击Shovel Management菜单,按以下方式增加一个shovel:

queue:shovel_demo_queue
URI格式:amqp://user:password@server-name/my-vhost
Source URI:amqp://zat:zat123@10.0.101.5/zat          #旧集群URI,IP要改
Destination URI:amqp://zat:zat123@10.0.104.5/zat    #U集群URI,IP要改

2、新增成功界面:

3、检查状态是否正常:

注:shovel是针对queue(队列)来操作的,有多少个队列要迁移数据,就要创建多少个对应的shovel。

 

验证

shovel创建好后,如果检查状态正常的话,它会自动进行迁移数据。现在我们来检查旧集群shovel_demo_queue队列的数据是否移到到新集群中。

1、在新集群中通过以下界面查看:

2、在旧集群中通过以下界面查看:

 

 

引用:

  • https://www.rabbitmq.com/shovel.html
  • https://www.rabbitmq.com/shovel-dynamic.html

posted on   曹伟雄  阅读(1713)  评论(1编辑  收藏  举报

编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!

导航

< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5
点击右上角即可分享
微信分享提示