消息队列之RabbitMQ

1.初识MQ

在分布式微服务中,不同服务接口之间的调用分为同步调用和异步调用。
使用同步调用有几种问题

  • 拓展性差
  • 性能差
  • 级联失败

因此在大部分场景,我们使用的都是异步调用。
异步调用方式其实就是基于消息通知的方式,一般包含三个角色:

  • 消息发送者:投递消息的人,就是调用方
  • 消息Broker:管理、暂存、转发消息,你可以把它理解成微信服务器
  • 消息接收者:接收和处理消息的人,就是服务提供方

image

图中不难看出,Broker是实现异步调用的核心,异步调用完全依赖于Broker的可靠性,安全性和性能,我们在这里使用MQ(消息队列)来实现Broker。

2.RabbitMQ

目前国内常用的MQ实现方案为RabbitMQ,其官网地址为https://www.rabbitmq.com/ 有兴趣可以进去看看。

2.1安装RabbitMQ

在这里我们使用Docker安装RabbitMQ,运行以下命令即可

点击查看代码
docker run \
 -e RABBITMQ_DEFAULT_USER=test \
 -e RABBITMQ_DEFAULT_PASS=123321 \
 -v mq-plugins:/plugins \
 --name mq \
 --hostname mq \
 -p 15672:15672 \
 -p 5672:5672 \
 --network hm-net\
 -d \
 rabbitmq:3.8-management

安装完成后,我们访问 http://你安装RabbitMQ的ip地址:15672 即可看到管理控制台。首次访问需要登录,默认的用户名和密码在配置文件中已经指定了。
image
登录进去后如图所示:
image
RabbitMQ对应的架构如图:
image
其中包含几个概念:

  • publisher:生产者,也就是发送消息的一方
  • consumer:消费者,也就是消费消息的一方
  • queue:队列,存储消息。生产者投递的消息会暂存在消息队列中,等待消费者处理
  • exchange:交换机,负责消息路由。生产者发送的消息由交换机决定投递到哪个队列。
  • virtual host:虚拟主机,起到数据隔离的作用。每个虚拟主机相互独立,有各自的exchange、queue

2.2RabbitMQ的五种模式

2.2.1简单模式

image
如图,简单模式中发布者直接将消息发步到消息队列中,消费者从消息队列中获取消息

2.2.2工作队列模式【Work Queues】

image
多个消费者都去获取消息队列中的消息,必然会有竞争关系,这种模式是能者多劳,简单来说就是执行效率快的消费者获取到的消息更多。

2.2.3发布订阅模式【Publish/Subscribe】

image
这种模式相当于群聊中的群发消息,发布者发布消息后最终消费者都能收到消息。

2.2.4路由模式【Routing】

image
这种模式可以理解为将消息私发给某个消费者。

2.2.5Topic模式【Topics】

image

这种模式与上一种类似,不过多了匹配规则,发布者只会将消息转发给规则匹配的消费者。
未完待续。。。。。。。。。。

posted @   我睡觉时候不困  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示