RabbitMQ

1.概念

Erlang 编写的一个开源的消息队列 ,实现了高级消息队列协议(AMQP)

2.核心

  • 生产者
  • 消费者
  • 队列(存储消息的缓冲区,遵循先进先出(FIFO)原则。)
  • 交换机(接收生产者发送的消息,并根据规则(路由键、绑定等)将消息分发到队列。)
  • 绑定(定义交换机和队列之间的关系)
  • 消息

3.应用场景

  • 异步任务处理
  • 解耦
  • 削峰
  • 延迟队列
  • 日志收集与分析

4.特点

  • 可靠性:支持消息持久化,ACK确认机制,事务
  • 灵活的路由:由交换机实现
  • 多协议支持
  • 管理界面

5.对比

  • rabbitMQ:适合轻量级业务解耦,灵活易用
  • rocketMQ: 适合强一致,低延迟的金融场景
  • Kafka:适合超高吞吐量,允许延迟的场景

6.交换机类型

  • direct(默认):精确匹配
  • topic:通配符匹配
  • fanout:广播
  • headers:支持复杂的路由模式(性能差,不推荐)

6.有哪些工作模式

  • 简单模式 (默认 Direct Exchange)
  • work工作模式(单队列 + 多消费者)
  • 路由模式 (Direct Exchange)
  • 主题模式 (Topic Exchange)
  • 发布订阅 (Fanout Exchange)

7.TTL 和 DLX

DLX 是死信交换器,消息在一个队列中变成死信之后,会重新发送到另一个死信交换器,绑定死信交换器的队列就叫死信队列

死信原因:

  • 消息被拒
  • 消息TTL过期
  • 队列满了,无法再添加

8.rabbitmq如何实现延时队列?

死信交换机+TTL

插件rabbitmq-delayed-message-exchange

9.如何保证消息的可靠性?

  • 生产者到MQ:事务机制 或 confirm确认机制(但是二者互斥,且事务性能差)
  • MQ自身:持久化机制(消息,交换机,队列),集群,镜像集群模式
  • MQ到消费者:ACK确认机制,死信队列,失败重试机制

10.如何避免重复消费?

业务幂等 + 手动ACK机制

11.如何防止消息堆积?

生产者限流 + 消费者扩容 + 配置TTL和死信队列

相关推荐
深蓝电商API7 小时前
分布式事务在跨境交易中的解决方案
分布式·跨境电商·代购系统·反向海淘·代购平台·跨境代购
我真会写代码11 小时前
从入门到精通:Kafka核心原理与实战避坑指南
分布式·缓存·kafka
黄俊懿12 小时前
【架构师从入门到进阶】第二章:系统衡量指标——第一节:伸缩性、扩展性、安全性
分布式·后端·中间件·架构·系统架构·架构设计
一叶飘零_sweeeet12 小时前
击穿 Kafka 高可用核心:分区副本、ISR 机制与底层原理全链路拆解
分布式·架构·kafka
007张三丰14 小时前
常用缓存技术全方位解析:从本地缓存到分布式缓存
分布式·缓存
tianyuanwo17 小时前
Koji 分布式编译调度机制深度解析:多架构异构节点的资源优化方案
分布式·架构
江沉晚呤时18 小时前
.NET 9 快速上手 RabbitMQ 直连交换机:高效消息传递实战指南
开发语言·分布式·后端·rabbitmq·.net·ruby
Volunteer Technology18 小时前
zookeeper基础应用与实战二
分布式·zookeeper·云原生
姚青&20 小时前
Pytest 测试用例并行运行与分布式运行
分布式·测试用例·pytest
若水不如远方1 天前
分布式一致性(六):拥抱可用性 —— 最终一致性与 Gossip 协议
分布式·后端·算法