当前位置: 首页 > 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.jsqmd.com/news/38809/

相关文章:

  • 第八天 测试用例编写
  • 软工团队作业2--需求规格说明书
  • 没用的博客园页面的要素介绍
  • 使用NVIDIA TAO 6和DeepStream 8构建实时视觉检测管道 - 实践
  • #题解#洛谷P1314#二分#前缀和#
  • Python 实现对遥感影像根据DN值上色
  • 《团队作业2》需求规格说明书
  • 【免费】MySQL自动化运维工具,一键生成WORD和EXCEL
  • 实用指南:轻量化 + 绿色部署的日志监控系统log-monitor设计思路(一)
  • 深入理解C++智能指针:掌握RAII与内存安全的利器 - 详解
  • 【LVGL】进度条部件
  • OpenEuler 22.03 安装zabbix-agent(源代码编译及自制rpm包)
  • pq使用体验和改进建议
  • Vue插值表达式
  • 设备坏了才修,能不能提前预测?
  • 好题集 (1) - LG P3978 [TJOI2015] 概率论
  • 部署MQTT Broker - Mosquitto - -YADA
  • useActionState 阻止表单重置
  • 路由基础
  • idea链接database时报错:serverTimezone
  • 题解:CF2117F Wildflower
  • UVM环境自动生成器具(2)uvmdvgen
  • 题解:CF961C Chessboard
  • 7年java开发的一些感悟
  • 11.12 NOIP模拟6/多校1 改题记录
  • 文字识别系统代码
  • B4093 [CSP-X2021 山东] 发送快递
  • 从零上手 Rokid JSAR:打造专属 AR 桌面交互式 3D魔方,开启空间创建之旅
  • 微软2025年11月补丁星期二修复1个零日漏洞和63个安全漏洞
  • CF468C Hack it!