消息队列之RabbitMQ

news/2024/10/14 20:50:45

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

【Azure Cloud Service】使用Key Vault Secret添加.CER证书到Cloud Service Extended Support中

使用Key Vault Secret添加.CER证书到Cloud Service Extended Support中问题描述 因为Key Vault的证书上传功能中,只支持pfx格式的证书,而中间证书,根证书不能转换为pfx格式,只能是公钥证书格式 cet 或者 crt,能通过文本工具直接查看base64编码内容。如一个证书链文件中可以…

java多线程基础知识速通

1.线程和进程的区别 进程是正在运行的程序实例,每个进程包含了多个线程,每个现场执行不同的任务 进程都有自己的内存空间,而一个进程下的线程们则是共享内存空间 线程更加轻量,线程上下文切换的成本远低于进程上下文切换的成本2.并行与并发的区别 并行是多核CPU一般执行相应…

程序员必看!从菜鸟到专家你要这么做,8年互联网老兵爆肝总结

“互联网行业工作8年多,在国内Top互联网大厂B(ytedance)AT中的两家待过。喜欢研究计算机基础原理,有移动端全栈(包括Android & iOS & 鸿蒙等)开发经验,对逆向和网络安全有一定经验。” 不管是在校大学生,还是初入职场的菜鸟,抑或是在互联网行业打拼多年的老码农…

CTF 的基础知识 题型 Trick总结

idk.references: 1 2 web php 语法基础 references: 1 php 脚本的基本格式: <?php //coding here ?>php 代码同样以 ; 结尾。 php 文件的后缀名大多是 php ,也有诸如 php5 php4 phps 之类,如果普通的后缀名被拦截不妨试试其他的。 php 变量用 $ 来定义,大小写敏感…

微服务03 微服务sentinel, springcloudgateway

6 Sentinel 6.1 Sentinel 介绍和工作机制 6.1.1 微服务流量治理组件介绍 随着微服务的流行,服务和服务之间的调用导致服务的稳定性问题变得越来越重要。 雪崩问题: 微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用,即雪崩。 解决雪崩问题的常见方式有…

Web刷题之polarctf靶场(3)

1. 干正则 打开靶场发现是简单的php代码审计, 先构造id=a[0]=www.polarctf.com, 由于要ping两次, 所以先构造cmd=|ls <?php error_reporting(0); if (empty($_GET[id])) {show_source(__FILE__);die(); } else {include flag.php;$a = "www.baidu.com";$result =…

题解:P2315 [HNOI2005] 数三角形

Problem Link [HNOI2005] 数三角形 题意 输入一个大三角形的各个边存在情况,输出里面有多少个正三角形。 Solution 简单暴力即可,用 \(4\) 个数组维护每条边能延伸的最大长度,然后逐个判断三角形是否可行即可。如图,l_upper 维护左端点向上(即 $\ell_{BA} $),l_lower 维…

梳理好本职工作之项目管理

项目整个里程碑,每个阶段应该输出什么