当前位置: 首页 > news >正文

RabbitMQ相关

RabbitMQ的AMQP协议是什么


AMQP(Advanced Message Queuing Protocol),高级消息队列协议,提供统一消息服务的开放标准,其核心目标是实现客户端与消息服务之前的高效、安全异步通信,并且在传递的时候不受客户端和开发语言的限制。

 

RabbitMQ消息的工作模式


简单模式:一个生产者一个队列一个消费者,先进先出,一般都是自己实验的时候玩。
队列模式:一个生产者一个队列多个消费者,消费者之间竞争消息,实现了消费者的均衡,一个消息只能被一个消费者消费。
交换机模式:
直连交换机(Direct Exchange):根据指定的路由键完全匹配路由到队列。若路由键不匹配,消息不会被分发。例如,若队列绑定键为 "dog",则仅匹配路由键为 "dog" 的消息。
 ‌

@Component
public class DirectConfig {@Beanpublic DirectExchange directExchangeOne(){
//        name:交换机名称,用于标识该交换机在RabbitMQ中的唯一性。 ‌
//        durable:持久化标志,true表示交换机会被持久化存储(重启后不丢失),false表示临时交换机(重启后消失)。默认值为true。 ‌
//        autoDelete:自动删除标志,true表示当所有绑定的队列解绑后自动删除该交换机,false表示手动删除return new DirectExchange("directExchangeOne",true,false);}@Beanpublic Queue directQueueOne(){//name:交换机名称,用于标识该交换机在RabbitMQ中的唯一性。 ‌//durable:持久化标志,true表示交换机会被持久化存储(重启后不丢失),false表示临时交换机(重启后消失)。默认值为true。return new Queue("directQueueOne", true);}@Beanpublic Queue directQueueTwo(){return new Queue("directQueueTwo");}@Beanpublic Binding directBindingOne(){return BindingBuilder.bind(directQueueOne()).to(directExchangeOne()).with("directKey1");}@Beanpublic Binding directBindingTwo(){return BindingBuilder.bind(directQueueTwo()).to(directExchangeOne()).with("directKey2");}}

 

扇型交换机(Fanout Exchange):将消息广播到所有绑定的队列,不依赖路由键。适用于需要消息被多个队列接收的场景。 ‌

@Component
public class FanoutConfig {@Beanpublic FanoutExchange fanoutExchange1(){return new FanoutExchange("fanoutExchange1");}@Beanpublic Queue fanoutQuery1(){return new Queue("fanout_queue1");}@Beanpublic Queue fanoutQuery2(){return new Queue("fanout_queue2");}@Beanpublic Binding fanoutBinding1(){return BindingBuilder.bind(fanoutQuery1()).to(fanoutExchange1());}@Beanpublic Binding fanoutBinding2(){return BindingBuilder.bind(fanoutQuery2()).to(fanoutExchange1());}
}
View Code

 

主题交换机(Topic Exchange):支持路由键使用通配符 *(匹配单个词)和 #(匹配多个词)。例如,绑定模式为 audit.# 可接收 audit.irs.corporate 类型的消息。 ‌

MQ如何保证消息不丢失
消息丢失分为四个场景
1.生产者到队列过程中
2.交换机到队列的过程
3.队列到消费者的过程
4.交换机未持久化
5.队列未持久化


解决办法
1.生产者到队列过程中防止消息丢失

 

http://www.zskr.cn/news/47889.html

相关文章:

  • 使用NVIDIA TAO 6和DeepStream 8构建实时视觉检测管道 - 实践
  • ChatBI 重构工业数据交互:TDengine IDMP 让数据对话更智能
  • 云服务模式进化论:企业云战略的致命误区,从IaaS到FaaS的死亡之旅!
  • Python 实现对遥感影像根据DN值上色
  • 【免费】MySQL自动化运维工具,一键生成WORD和EXCEL
  • 实用指南:轻量化 + 绿色部署的日志监控系统log-monitor设计思路(一)
  • 随机链表的复制-leetcode
  • useActionState 阻止表单重置
  • 部署MQTT Broker - Mosquitto - -YADA
  • 7年java开发的一些感悟
  • 11.12 NOIP模拟6/多校1 改题记录
  • FFmpeg for Android 图传Web
  • 语法记录
  • Win7 隐藏文件夹盘符
  • DotNetGuide 突破了 9.5K + Star,一份全面的C#/.NET/.NET Core学习、工作、面试指南知识库!
  • 在ec2上部署qwen3-VL-2B模型
  • 【数据结构】第六章启航:图论入门——从零掌握有向图、无向图与简单图
  • 软件工程学习日志2025.11.12
  • NLTK库用法示例:Python自然语言处理入门到实践 - 实践
  • 2025人形机器人产业链全景分析报告:核心技术与市场趋势|附130+份报告PDF、数据、可视化模板汇总下载
  • 2025履带式/机场/智能驱鸟机器人系统推荐榜:申昊科技以AI赋能,破解多场景鸟害难题
  • 2025室外/攀爬/绳网/公园/景区/户外游乐设施企业口碑榜:全场景覆盖 + 实力出圈,这4家企业成采购优选
  • 2025年邦顿商用空气能厂家新实力榜:聚焦邦顿商用变频/商用变频冷暖/商用变频热泵/模块化应用优势!
  • 实用指南:OmniSteward:LLM Agent 赋能,语音文字随心控,智能家居与电脑的超级管家
  • 例子:vue3+vite+router创建多级导航菜单,菜单收缩展开优化
  • CF1984F Reconstruction
  • IDM超详细安装下载教程,一次安装免费使用 Internet Download Manager
  • 详细介绍:微信小程序开发实战指南(三)-- Webview访问总结
  • flask: 用flask-cors解决跨域问题
  • Linux小课堂: 用户管理与权限控制机制详解 - 实践