RabbitMQ (二)参数 - 教程

news/2025/10/21 14:08:08/文章来源:https://www.cnblogs.com/tlnshuju/p/19154894

RabbitMQ (二)参数 - 教程

2025-10-21 14:05  tlnshuju  阅读(0)  评论(0)    收藏  举报

简单模式的三个参数

哔哩哔哩 

【消息队列rabbitmq】https://www.bilibili.com/video/BV12A411q7dE?p=7&vd_source=a4afc316a0a5fd4aa85dd927345f10a4

1.持久化参数

1.1 队列持久化

channel.queue_declare(queue='hello_queue', durable=True)
  • 队列一旦声明,是否持久化就确定了,不能更改了。
  • 如果想把非持久化的队列改为持久化队列,会报错。
  • 若声明过,则换一个队列名字。

1.2 消息持久化

properties=pika.BasicProperties(delivery_mode=pika.spec.PERSISTENT_DELIVERY_MODE  
)
properties = pika.BasicProperties(delivery_mode=2)

两者是等价写法

# 这本质上是 pika/spec.py 中定义的内容
PERSISTENT_DELIVERY_MODE = 2
  • pika.spec.PERSISTENT_DELIVERY_MODE 是 Pika 库提供的一个常量。如果查看它的源码,会发现它的定义就是 2
  • 数字 2 是 AMQP 协议标准中定义的一个值,明确代表“持久化消息”(persistent message)。这意味着消息会被写入磁盘,以便在 RabbitMQ 服务器重启后仍然存在(前提是它所在的队列也是持久化的)。
  • 代码一眼就能看出意图是设置“持久化投递模式”,而不需要去记忆或查找协议文档中的数字含义。

1.3 问题

1.3.1 持久化的队列就会一直留在磁盘么,无论MQ是否重启?

1.3.2 它可能会先将其写入操作系统的缓存,然后在某个间隔后再批量刷到磁盘。 那么消费者是需要等待消息写入磁盘之后,才能监听到这条新消息吗

1.3.3 通知消费者:一旦消息被存入内存和页面缓存,RabbitMQ 就认为这条消息已经“持久化”了(从软件层面),并会立刻将其投递给合适的消费者。消费者此时就可以开始处理这条消息了。 可是消费者已经处理完了 还需要再批量写入磁盘么

是的,即使消费者已经处理完并返回了确认(ACK),只要这条消息最初是持久化的,RabbitMQ仍然需要完成将它写入磁盘这个过程。​

2.应答参数

channel.basic_consume(queue='hello_queue',
auto_ack=True, # 应答参数
                      on_message_callback=callback)

2.1 auto_ack=True 默认应答      (效率)

队列有数据,取走,取走就出队,队列里就没有了。

如果消费者进程出bug了,callback没有成功执行,但是已经出队了,没办法重新处理

2.2 auto_ack=False 手动应答   (安全)

在callback中加入 ch.basic_ack(delivery_tag=method.delivery_tag)

def callback(ch, method, properties, body):........... # 自己要处理的逻辑ch.basic_ack(delivery_tag=method.delivery_tag)
# 确定监听队列参数
channel.basic_consume(queue='hello_queue',auto_ack=False, # 手动应答on_message_callback=callback)

要处理的操作成功执行,出队

3.分发参数

  • 用于多个消费者监听同一个队列
  • 默认:轮询分发模式
  • 有两个消费者同时监听一个的队列。其中一个线程sleep2秒,另一个消费者线程sleep1秒,但是处理的消息是一样多。这种方式叫轮询分发(round-robin)不管谁忙,都不会多给消息,总是你一个我一个。
  • 想要做到公平分发(fair dispatch),必须关闭自动应答ack,改成手动应答。使用basicQos(perfetch=1)限制每次只发送不超过1条消息到同一个消费者,消费者必须手动反馈告知队列,才会发送下一个。
def callback(ch, method, properties, body):........... # 自己要处理的逻辑ch.basic_ack(delivery_tag=method.delivery_tag)
# 公平分发
channel.basic_qos(prefetch_count=1)
# 确定监听队列参数
channel.basic_consume(queue='hello_queue',auto_ack=False, # 手动应答on_message_callback=callback)

这样处理速度快的消费者进程就可以多得到一些消息,不用一直等待

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/942247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025珠海杰尚家具厂家推荐:学校办公酒店全屋定制实力品牌

2025珠海杰尚家具厂家推荐:学校办公酒店全屋定制实力品牌 行业现状与技术挑战 当前,定制家具行业正面临着前所未有的技术挑战。根据行业数据显示,学校家具定制领域的产品合格率仅为78.3%,办公家具的使用寿命普遍低…

生成式AI购物助手Rufus的技术架构解析

本文深入解析基于生成式AI的购物助手技术架构,涵盖定制大语言模型训练、检索增强生成技术应用、强化学习优化机制、高性能推理芯片加速策略以及流式架构设计等核心技术模块。基于生成式AI的购物助手Rufus的技术实现 &…

2025气柱袋优质厂家推荐昆山戈尔德,专业缓冲包装定制生产厂家

2025气柱袋优质厂家推荐:专业缓冲包装定制生产引领者 行业技术挑战与创新突破 在当今快速发展的电商和物流行业中,缓冲包装材料的技术创新已成为保障商品安全运输的关键环节。气柱袋、防震气柱袋、防摔气柱袋等产品作…

百度网盘下载速度慢怎么解决?

百度网盘下载速度慢怎么解决?今天,教大家一下百度网盘下载速度慢怎么解决。首先,我也是非常痛恨这种速度的,像蜗牛一样慢,还好,我之前找到一种方法。地址获取:放在这里了,可以直接获取这个就是我测试的速度。速…

AI 图像生成工具:探索最新与最优的人工智能创作平台

AI 图像生成工具:探索最新与最优的人工智能创作平台随着人工智能技术的快速发展,AI 图像生成工具正逐渐成为艺术创作、营销设计以及个性化内容创作的重要工具。这些工具能够根据用户的输入描述,自动生成符合要求的图…

2025数控滚齿机实力厂家推荐,无锡吉莱特智能装备高精度定制!

2025数控滚齿机实力厂家推荐,无锡吉莱特智能装备高精度定制! 技术挑战:数控滚齿机行业面临的发展瓶颈 当前,数控滚齿机行业正面临着前所未有的技术挑战。随着制造业向智能化、精密化方向快速发展,传统滚齿设备已难…

【网络编程】揭秘 HTTPS 数据安全:加密方案与证书体系的协同防护 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

照片墙

body { background: url("https://img.zcool.com.cn/2021/03/15/604e5b5e7c7d3.jpg") repeat; min-height: 100vh; margin: 0; font-family: "Kalam", sans-serif; color: rgba(68, 34, 0, 1) } .…

KDE connection to the service lost

robert@moonriver / $ sudo systemctl --user restart wireplumber pipewire pipewire-pulse Password: Failed to connect to user scope bus via local transport: $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR…

CallbackData错误原因分析

CallbackData DoesNotExist 错误原因深度分析 问题现象 在调用 ticket_update 和 ticket_submit API 时,Celery 出现错误: ERROR: Task pipeline.eri.celery.tasks.schedule raised unexpected: DoesNotExist(Callb…

hash判断两个集合是否完全相同

现有两个无序整数集合 \(a\), \(b\),判断二者是否相同。 可以使用 \(hash\):钦定一个质数 \(P\) 与模数 \(M\),对两个集合分别求: \[(\sum_{i=1}^{n}P^{r_{i}})\space mod \space M \]看结果是否相同即可。 题目:…

2025滑触线实力厂家推荐,无锡宸澳电气多型号防爆安全定制!

2025滑触线实力厂家推荐,无锡宸澳电气多型号防爆安全定制! 技术挑战与行业痛点:数据揭示严峻现实 在工业自动化快速发展的今天,滑触线作为关键的电能传输设备,面临着前所未有的技术挑战。根据行业调研数据显示,传…

Win10 LTSC 安装MSIX软件包

Win10 LTSC 安装MSIX软件包作者: 半堕落↓平民时间:2024-03-07 15:26分类: 使用技巧1. 设置-应用和功能-可选功能-添加功能安装MSIX打包工具驱动程序 2. 下载安装VCLibs下载,访问https://aka.ms/Microsoft.VCLibs.x6…

2025年GEO优化公司推荐:五大实力企业口碑榜,引领AI搜索营销新生态

据艾瑞咨询《2025年中国生成式引擎优化(GEO)行业发展白皮书》显示,2024-2025年国内企业对GEO服务的需求同比激增187%,超68%的中大型企业将GEO优化纳入年度核心营销预算。 随着豆包、DeepSeek、元宝等生成式AI搜索工…

2025微弧氧化加工厂家推荐:常州华源专业表面处理技术供应商

2025微弧氧化加工厂家推荐:常州华源专业表面处理技术供应商 技术挑战与行业现状 微弧氧化技术作为轻金属表面处理的重要工艺,在铝合金、镁合金、钛合金等材料应用中面临着多重技术瓶颈。根据行业统计数据显示,当前微…

084_尚硅谷_多分支应用案例

084_尚硅谷_多分支应用案例1.多分支应用案例2 2.例题三_1 3.例题三_2 4.例题三_3

2025防腐工程厂家推荐:无锡华金喷涂技术领先,定制防腐解决方案

2025防腐工程厂家推荐:无锡华金喷涂技术领先,定制防腐解决方案 在工业制造领域,腐蚀问题一直是困扰企业发展的重大难题。据统计,全球每年因腐蚀造成的经济损失约占各国GDP的3%-4%,其中工业设备腐蚀导致的停机维修…

2025年10月全屋智能家居品牌推荐:盈趣领衔对比评测榜

一、引言 全屋智能已从“锦上添花”升级为“刚需配置”,创业者、精装采购者、高端自装业主的共同痛点集中在三点:系统必须真互联,降低后期扩容成本;质保周期要覆盖装修折旧周期;交互方式需同时照顾老人、儿童与租…

2025码垛机厂家推荐济南金瑞祥,全自动龙门桁架定制实力企业

2025码垛机行业变革:全自动龙门桁架定制引领智能制造新浪潮 行业技术挑战与突破 在当今制造业转型升级的关键时期,码垛机领域面临着前所未有的技术挑战。根据行业数据显示,传统码垛设备的效率瓶颈已成为制约企业产能…

Java 多线程编程详解

Java 多线程编程详解Java 多线程编程是实现并发任务的核心技术,通过充分利用 CPU 多核资源,可显著提升程序的执行效率(如并行处理数据、异步响应请求等)。本文从线程基础、创建方式、同步机制、线程通信到高级工具…