RabbitMQ
1.队列
一种容器,可存入元素,访问元素,删除元素,特点是先进先出
2.消息
在两台计算机之间传送的数据单位。消息可以非常简单,例如只包含文本字符串,也可以很复杂,可能包含嵌入对象
3.消息队列
消息队列是在消息的传输过程中保存消息的容器
作用:
- 异步处理
- 解耦
- 削峰,防止高并发数据库奔溃
- 不同系统间通信
缺点:
- 系统可用性降低
- 系统复杂性增加
ConnectionFactory
:与RabbitMQ服务器连接的管理器Connection
:与RabbitMQ服务器的连接Channel
:信道Producter
:生产者,就是往RabbitMQ发消息的程序Broker
:RabbitMQ服务器Consumer
:消费者,从RabbitMQ服务器拿消息的程序Exchange
:交换器,接收消息并且转发到绑定的队列Queue
:队列,存储消息RoutingKet
:路由键,指定当前消息被谁接收
4.SpringBoot整合RabbitMQ
先导入pom依赖,然后在application.yml中配置
5.Direct(直连)交换器
特点:发布与订阅,完全匹配,将消息发给唯一的节点时使用
任何发送到Direct Exchange的消息都会被转到RoutingKey中指定的Queue
- 一般情况下可以使用RabbitMQ自带的Exchange:
""
(该交换器名字为空字符串) - 这种消息模式下不需要将Exchange进行任何绑定(binding)操作
- 消息传递时需要一个RoutingKey,可以简单理解为要发送到的队列的名字
- 如果vhost中不存在RoutingKey中指定的队列名,则该消息会被抛弃
6.Fanout(广播)交换器
特点:广播模式,所有绑定Exchange的Queue都可以收到消息,当我们需要将消息依次发给多个队列时,需要使用这种模式
- 可以理解为路由表的模式
- 这种模式不需要RoutingKey
- 这种模式需要提前将Exchange与Queue进行绑定,一个Exchange可以绑定多个Queue,一个Queue也可以与多个Exchange进行绑定
- 如果接收到消息的Exchange没有与任何Queue绑定,则消息会被抛弃
7.Topic(主题)交换器
Exchange根据指定的匹配规则将消息发给相应的Queue