RabbitMQ消息中间件详解
一、初识消息中间件
1.概念
消 息:信息的载体 中间件:提供 软件和软件之间 连接的软件,用于软件和软件之间的的沟通 消息中间件:软件和软件之间,发送消息的软件(负责传递消息的)
-
软件和硬件之间的连接是 操作系统 软件和人之间的连接是UI 软件和软件之间的连接 是中间件
2.优势
业务调用链短,用户等待时间短 (订单信息同步,先直接反馈给用户。而复杂的操作是在后面处理) 部分组件故障不会不会瘫痪整个业务(出现问题的消息会存储在中间件中) 业务高峰期有缓冲(会暂存在消息中间件中) 业务高峰期不会产生大量的异步线程
注:在微服务中,不要有长时间的异步线程,要保证每一个线程都是短的。因为长的线程很容易被杀掉
3.作用
解耦 异步处理 流量的削峰和流控 消息广播(可以一个服务,给多个服务发消息) 消息收集(多个微服务向一个微服务发消息) 最终一致性
4.分类
二、RabbitMQ高性能的原因
因为RabbitMQ底层使用 Erlang实现。而Erlang:
-
在进程间上下文切换效率远高于C语言 基于虚拟机解释运行,能够跨平台部署 并且是通用的面向并发的编程语言,适用于分布式系统。
三、AMPQ协议
题外话: 学会了AMPQ协议的使用,就基本掌握了RabbitMQ的使用 学会了AMPQ协议的概念,就基本掌握了RabbitMQ协议的核心概念 AMPQ是RabbitMQ的规范,规定了RabbitMQ的对外接口
1.架构图
- Broker : 原译为代理商、中间人。Message Broker指的就是RabbitMQ。接收和分发消息的应用
- Virtual Host : 相当于虚拟的RabbitMQ,将多个单元隔开(很类似我们电脑中可以安装虚拟机)
- Connection : publisher/consumer和broker之间的TCP连接
- Channel : connection内部建立的逻辑连接,通常每个线程创建单独的channel
- Exchange : 交换机,相当于快递的分拨中心,是AMQP中的核心概念
- Queue : 消息队列,消息最终被送到这里等待consumer取走
- Binding : exchange和queue之间的虚拟连接,用于message的分发依据
2.核心概念:Exchange
3.Exchange解析
3.1Direct Exchange
Message中的Routing Key,如果和Binding Key一致,Direct Exchange则将message发到对应的queue中
就是说,消息会进入到和 Routing Key 、binding Key两者相互匹配的Queue中,注意,而不是Routing Key 和队列的直接匹配。
如果,binding Key 没有与之匹配的,那么这个消息会直接丢弃
3.2Fanout Exchange
fanout,原译为:扇形,扇形发散。Fanout Exchange 也是很形象,指 每个发到Fanout Exchange的 message都会分发到 所有绑定的queue上去
从上图我们可以看到,binding Key 消失了。不是没有了哈!!而是,不那么重要了,就不画出来了。消息直接发送到Exchange上,直接 群发广播到三个队列中(一条消息,变为3条)
(待更新,未完…)
上一篇:
IDEA上Java项目控制台中文乱码