1.RabbitMQ 的使用场景有哪些?
- 抢购活动,削峰填谷,防止系统崩溃
- 延迟信息处理,比如10分钟后给下单未付款的用户发送邮件提醒
- 解耦系统,对于新增的功能可以单独填写模块扩展,比如用户确认评价之后,新增了给用户返回积分的功能,这个时候不用在业务代码里添加新增积分功能,只需要把新增积分的接口订阅确认评价的消息队列即可,后米娜再添加任何功能只需要订阅对应的消息队列即可。
2.RabbitMQ 有哪些重要的角色?
- 生产者:消息的创建者,负责创建和推送数据到消息服务器
- 消费者:消息的接受方,用于处理数据和确认消息;
- 代理:就是 RabbitMQ 本身,用于扮演快递的角色,本身不生产消息,只是扮演“快递”的角色
3.RabbitMQ 有哪些重要的组件?
- ConnectionFactory(连接管理器):应用程序与 Rabbit 之间建立连接的管理器,程序代码中使用
- Channel(信道):消息推送使用的通道
- Exchange(交换器):用于接受、分配消息
- Queue(队列):用于存储产生者的消息
- RoutingKey(路由键):用于把生产者的数据分配到交换器上
- BindingKey(绑定键):用于把交换器的消息绑定到队列上
4.RabbitMQ 中 vhost 的作用是什么?
每个 RabbitMQ 都能创建很多个 vhost ,我们称之为虚拟主机,每个虚拟主机其实都是mini 版的 RabbitMQ ,它拥有自己的队列,交换器和绑定,拥有自己的权限机制。
5.RabbitMQ 的消息是怎么发送的?
首先客户端必须连接到 RabbitMQ 服务器才能发布和消费信息,客户端和 rabbit server 之间会创建一个 tcp 连接,一旦 tcp 打开并通过了验证(认证就是你发送给 Rabbit 服务器的用户名和密码),你的客户端和 RabbitMQ 就创建了一条 amqp 信道(channel),信道是建立在“真实” tcp 上的虚拟连接,amqp 命令都是通过信道发送出去,每个信道都会有一个唯一的 id ,不论是发布消息,订阅队列都是通过这个信道完成的。