rabbitmq元数据迁移

导出元数据

bash 复制代码
# 导出用户、vhost、权限、交换机、队列等配置
rabbitmqctl export_definitions /tmp/rabbitmq_definitions.json

导入元数据

bash 复制代码
# 目标端导入元数据
rabbitmqctl import_definitions /tmp/rabbitmq_definitions.json
bash 复制代码
root@rabbitmq-test-0:/restore# rabbitmqctl import_definitions /restore/restore-mq.json
Importing definitions in JSON from a file at "/restore/restore-mq.json" ...
Successfully started definition import. This process is asynchronous and can take some time.

export-mq.json 文件逻辑解析

export-mq.json 是一个 RabbitMQ 消息队列系统的配置导出文件。

1. 整体结构

该文件是一个标准的 JSON 配置文件,主要包含以下几大部分:

  • bindings: 定义交换机与队列之间的绑定关系
  • queues: 定义所有消息队列及其属性配置
  • exchanges: 定义所有消息交换机及其属性配置
  • users: 定义用户权限配置(从部分内容可推断)
  • policies: 定义策略配置(当前为空数组)

2. 多租户隔离

系统采用多个虚拟主机(vhost)进行租户隔离:

每个虚拟主机拥有独立的交换机、队列和权限设置,实现了业务模块的隔离。

3. 消息路由架构

交换机类型

  • topic交换机 :最常用,支持模式匹配路由键,如 dlx, taskComplete, processDel, statusChange, message
  • direct交换机 :基于精确匹配,如 remind 交换机

队列特性

  • 所有队列均设置为 durable: true(持久化),确保消息不丢失
  • 所有队列均设置为 auto_delete: false,不会自动删除
  • 大部分队列配置了 x-message-ttl: 60000(消息1分钟过期)
  • 所有队列都关联了死信交换机 x-dead-letter-exchange: "dlx"

绑定关系

  • 交换机通过路由键(routing_key)将消息路由到特定队列
  • 使用 # 通配符表示匹配所有消息
  • 使用特定键名(如 pending, timeout, todo, assignee)进行精确路由

4. 死信处理机制

系统实现了完整的死信处理流程:

  • 每个虚拟主机都定义了专用的死信交换机 dlx(topic类型)
  • 每个业务队列都配置了 x-dead-letter-exchange: "dlx"
  • 死信交换机通过 routing_key: "#" 将所有死信消息路由到 dlq 队列
  • 这种设计确保了过期或处理失败的消息不会丢失,便于后续处理和问题排查
相关推荐
段小二4 分钟前
为什么 Claude 不用 RAG?——理解 RAG 的真实边界,再用 Spring AI 落地三种架构(Java 架构师的 AI 工程笔记 06)
后端
Mr.45677 分钟前
Spring Boot 3 + EasyExcel 3.x 实战:构建高效、可靠的Excel导入导出服务
spring boot·后端·excel
匆匆忙忙之间游刃有余8 分钟前
Openclaw 为什么突然火了?我拆完它的架构后,发现它正在把 AI 助手变成“数字分身”
人工智能·后端
悟空码字12 分钟前
别再让你的SpringBoot包"虚胖"了!这份瘦身攻略请收好
java·spring boot·后端
掘金者阿豪12 分钟前
MiGPT GUI给小爱音箱装「AI 大脑」,自定义人设 + 百变音色!cpolar 内网穿透实验室第 726 个成功挑战
前端·后端
盐水冰22 分钟前
【烘焙坊项目】后端搭建(13)- 数据统计--图形报表
java·后端·学习·spring
野犬寒鸦24 分钟前
从零起步学习计算机操作系统:I/O篇
服务器·开发语言·网络·后端·面试
后端不背锅25 分钟前
分布式事务解决方案:2PC、3PC、TCC、Saga
后端