rabbitmq 20 / 26 题
rabbitmq注意点和调优
简答版本RabbitMQ 调优主要围绕内存、磁盘、连接、消费者四个维度。内存方面,vm_memory_high_watermark 默认 40% 偏低,建议调到 60%70%,同时设好 paging_ratio...
rabbitmq镜像队列
简答版本镜像队列是 RabbitMQ Classic Cluster 下的高可用方案,通过 Policy...
rabbitmq仲裁队列
仲裁队列是 RabbitMQ 基于 Raft 共识协议的队列类型,消息写入需多数节点确认才算成功,保证已确认数据绝不丢失。声明时设 x-queue-type:...
rabbitmq搭建集群有几种方式,每种方式的优缺点,数据怎么分布
2. 普通集群(Classic Cluster):原理: 每个节点共享元数据(队列名、Exchange、绑定关系),但消息只存在主节点node1: queue_A 的主人 → 消息在 node1 上 node2: 知道...
rabbitmq搭建集群
2. RabbitMQ 集群的核心概念:① 节点类型:元数据: 队列名称、位置、Exchange、绑定关系、用户权限等消息数据: 队列里的消息内容,只存在队列主节点所在的服务器上推荐:...
rabbitmq+saga具体如何实现
Saga模式原理: 把分布式事务拆成一系列本地事务,每步成功后发消息触发下一步,失败则发消息触发前面所有步骤的补偿事务(撤销)两个核心:每个正向操作必须写对应的补偿操作(撤销)补偿按相反顺序执行两种实现:编排式(推荐简单场景):...
RabbitMQ 如何解决分布式事务?
RabbitMQ 不支持分布式事务: 数据库操作和发消息无法在同一个事务里,需要其他方案保证最终一致性方案一 — 本地消息表(最推荐):业务入库 + 写消息表(同个本地事务)异步发送消息,失败不抛异常后台定时任务扫描 PENDING...
rabbitmq配置
简答版本RabbitMQ...
rabbitmq本地重试还是重试队列
简答版本消息消费失败需要重试,有两种方式:本地重试和重试队列。本地重试是消费者在内存里用循环重试,实现简单但消费者挂了消息就丢了,且会阻塞其他消息消费。重试队列是把失败的消息 nack 回 RabbitMQ,进入设了 TTL...
rabbitmq如何顺序消费消息
RabbitMQ 同一个 Queue 内消息是 FIFO 有序的,但多个 Consumer 并行消费时处理速度不同,会导致乱序。解决方案:最简单是单 Consumer 但吞吐低;最推荐的是按业务 Key(如订单号)路由到不同...
rabbitmq持久化
简答版本RabbitMQ 持久化保证重启后数据不丢失,需要三要素全部持久化:Exchange 设 durable=True(交换器元数据存盘)、Queue 设 durable=True(队列元数据存盘)、Message 设...
rabbitmq惰性队列
惰性队列定义: 消息直接写磁盘不缓存内存,消费时才从磁盘读取加载核心优势: 内存占用极低,消息堆积百万条也不会触发 Flow Control普通 vs 惰性:...
Rabbitmq 延迟队列
延迟队列定义: 消息发送后延迟一段时间才被消费,典型场景:订单30分钟未支付自动关闭、定时提醒、延迟重试实现方案一 — TTL + 死信队列(原生):队列设 x-message-ttl +...
rabbitmq如何保证幂等性,消息不被重复消息
重复消费原因: 消费者崩溃未 ack → 重入队;nack+requeue;网络抖动 ack 丢失;生产者超时重发幂等性定义: 同一条消息消费多次,效果和消费一次完全一样,不产生副作用Redis SETNX 去重(最常用):...
rabbitmq如何保证消息不要过多生产
代码层限速: 令牌桶/匀速发送/批量间隔控制发送速率,最灵活Confirm 模式: 同步等确认或异步+发送窗口,感知 Broker 是否能接住队列长度限制: x-max-length +...
rabbitmq消息堆压如何解决
简答版本消息堆压就是生产比消费快,队列积压大量消息。先排查原因——是生产突增还是消费卡住。紧急止血靠加消费者实例、临时消费者转储、暂停生产者。根本解决要优化消费逻辑(减少处理时间、并发消费、调...
rabbitmq插件是什么,有哪些,怎么安装
定义: 扩展 RabbitMQ 功能的模块,rabbitmq-plugins enable/disable 一条命令开关常用插件:rabbitmq_management → Web 管理界面,必开,端口...
Rabbitmq 死信队列
死信队列(DLQ)是存放无法正常消费消息的特殊队列。消息变成死信有三种原因:消费者 nack/reject 且 requeue=false、消息 TTL 过期、队列达到最大长度。创建死信队列的关键是在普通队列创建时设置...
rabbitmq如何保证,消息被正确消费
核心机制:手动 ack(auto_ack=False)处理成功 → basic_ack → 消息从队列删除处理失败 → basic_nack(requeue=True) → 重新入队再试消费者崩溃 → 没 ack → 连接断开 →...
rabbitmq如果发送没有成功,那么代码是阻塞 的吗,还是异步再发送,还是把原先执行的其他操作回滚了
confirm 模式(最常用)— 默认是同步阻塞的pythonchannel.confirm_delivery() try: channel.basic_publish( ...