更新 消息队列集群-rabbitMQ.md

This commit is contained in:
wxin 2025-03-16 10:57:45 +08:00
parent d5b7c99448
commit 6199e60b79

View File

@ -33,11 +33,11 @@
传统做法(传统模式的缺点:假如库存系统无法访问,则订单减库存将失败,从而导致订单失败,订单系统与库存系统耦合)
![](accents\image-202503150001.png)
![](http://182.92.143.66:40072/directlink/img/rabbitmq/image-202503150001.png)
使用消息队列
![](accents\image-202503150002.png)
![](http://182.92.143.66:40072/directlink/img/rabbitmq/image-202503150002.png)
订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功
@ -51,21 +51,21 @@
1串行方式新注册信息生成后先发送注册邮件再发送验证短信
![](accents\image-202503150003.png)
![](http://182.92.143.66:40072/directlink/img/rabbitmq/image-202503150003.png)
2并行处理新注册信息写入后由发短信和发邮件并行处理
![](accents\image-202503150004.png)
![](http://182.92.143.66:40072/directlink/img/rabbitmq/image-202503150004.png)
3若使用消息队列在写入消息队列后立即返回成功给客户端则总的响应时间依赖于写入消息队列的时间而写入消息队列的时间本身是可以很快的基本可以忽略不计因此总的处理时间相比串行提高了2倍相比并行提高了一倍
![](accents\image-202503150005.png)
![](http://182.92.143.66:40072/directlink/img/rabbitmq/image-202503150005.png)
**限流削峰:**广泛应用于秒杀或抢购活动中,避免流量过大导致应用系统挂掉的情况
具体场景:秒杀活动,一般会因为流量过大,导致流量暴增,应用挂掉。为解决这个问题,一般需要在应用前端加入消息队列
![](accents\image-202503150006.png)
![](http://182.92.143.66:40072/directlink/img/rabbitmq/image-202503150006.png)
1作用
@ -78,7 +78,7 @@
日志处理日志处理是指将消息队列用在日志处理中比如Kafka的应用解决大量日志传输的问题
![](accents\image-202503150007.png)
![](http://182.92.143.66:40072/directlink/img/rabbitmq/image-202503150007.png)
1日志采集客户端负责日志数据采集定时写受写入Kafka队列
@ -90,11 +90,11 @@
1点对点通讯客户端A和客户端B使用同一队列进行消息通讯
![](accents\image-202503150008.png)
![](http://182.92.143.66:40072/directlink/img/rabbitmq/image-202503150008.png)
2聊天时通讯客户端A客户端B客户端N订阅同一主题进行消息发布和接收。实现类似聊天室效果
![](accents\image-202503150009.png)
![](http://182.92.143.66:40072/directlink/img/rabbitmq/image-202503150009.png)
### 3. 消息队列模式
@ -211,7 +211,7 @@ AMQP协议解决了以上的问题而RabbitMQ实现了AMQP。
RabbitMQ从整体上来看是一个典型的生产者消费者模型主要负责接收、存储和转发消息
![](accents\image-202503150010.webp)
![](http://182.92.143.66:40072/directlink/img/rabbitmq/image-202503150010.webp)
AMQP模型中消息在producer中产生发送到MQ的exchange上exchange根据配置的路由方式发到相应的Queue上Queue又将消息发送给consumer消息从queue到consumer有push和pull两种方式。
@ -276,7 +276,7 @@ rabbitMQ常用命令
[root@rebbitmq ~]# vim /etc/rabbitmq/rabbitmq.config
```
![](accents\image-202503150011.png)
![](http://182.92.143.66:40072/directlink/img/rabbitmq/image-202503150011.png)
去掉后面的逗号
@ -291,11 +291,11 @@ rabbitMQ常用命令
默认用户名和密码:guest guest
![](C:\Users\wxin\Desktop\rabbitMQ\accents\image-202503150012.png)
![](http://182.92.143.66:40072/directlink/img/rabbitmq/image-202503150012.png)
### 6. 用户管理
![](accents\image-202503150013.png)
![](http://182.92.143.66:40072/directlink/img/rabbitmq/image-202503150013.png)
**角色**
@ -321,7 +321,7 @@ rabbitMQ常用命令
总之就是TCP消耗资源
![](accents\image-202503150014.png)
![](http://182.92.143.66:40072/directlink/img/rabbitmq/image-202503150014.png)
使用rabbitmq时不管是消费还是生产都需要创建信道channel 和connection连接连接是连接到RabbitMQ的服务器
@ -343,13 +343,13 @@ rabbitMQ常用命令
binding 其实是 exchange 和 queue 之间的桥梁,它告诉我们 exchange 和那个队列进行了绑定关系( X 与 Q1 和 Q2 进行了绑定)
![](accents\image-202503150015.png)
![](http://182.92.143.66:40072/directlink/img/rabbitmq/image-202503150015.png)
扇出fanout
它是将接收到的所有消息广播到它知道的所有队列中
![](accents\image-202503150016.png)
![](http://182.92.143.66:40072/directlink/img/rabbitmq/image-202503150016.png)
直接direct
@ -373,7 +373,7 @@ channel.BasicPublish(exchange: "pdf_events",
在direct类型的exchange中只有这两个routingkey完全相同exchange才会选择对应的binging进行消息路由
![](accents\image-202503150017.png)
![](http://182.92.143.66:40072/directlink/img/rabbitmq/image-202503150017.png)
主题topic:
@ -381,7 +381,7 @@ channel.BasicPublish(exchange: "pdf_events",
其中’'表示匹配一个单词, '#'则表示匹配没有或者多个单词
![](accents\image-202503150018.png)
![](http://182.92.143.66:40072/directlink/img/rabbitmq/image-202503150018.png)
第一个binding
@ -420,7 +420,7 @@ binding routingkey: agreements.eu.*.headstore
### 9. Queues 队列
![](accents\image-202503150019.png)
![](http://182.92.143.66:40072/directlink/img/rabbitmq/image-202503150019.png)
- name: 队列名称
@ -551,7 +551,7 @@ Cluster status of node rabbit@rabbitmq1 ...
登录rabbitmq web管理控制台
![](accents\image-202503150020.png)
![](http://182.92.143.66:40072/directlink/img/rabbitmq/image-202503150020.png)
### 3. 搭建 rabbitmq 的镜像高可用模式集群
@ -578,7 +578,7 @@ ha-mode为匹配类型他分为3种模式
- exctly-部分需配置ha-params参数此参数为int类型比如3众多集群中的随机3台机器
- nodes-指定需配置ha-params参数此参数为数组类型比如["3rabbit@F","rabbit@G"]这样指定为F与G这2台机器。
![](accents\image-202503150021.png)
![](http://182.92.143.66:40072/directlink/img/rabbitmq/image-202503150021.png)
### 4. 权限设置(补充)