🎗️ 主页:小夜时雨
🎗️专栏:消息队列
🎗️如何活着,是我找寻的方向
1. 什么是消息队列?
消息队列就是一个存放消息的容器,当有消息的时候,消费者就可以监听处理这些消息,属于一种中间件。
队列是一种先进先出的数据结构,所以消息队列会保证消息的顺序性,其中发布消息的称为生产者,处理接受消息的称为消费者。
消息队列的作用:
- 异步处理
- 削峰(也称限流)
- 降低系统的耦合度
异步:
- 同步就是调用者发起请求之后,需要等待服务提供者执行完毕返回结果后,调用者才可以执行其他的业务,也就是说调用者在调用过程中是属于阻塞状态的,这种调用方式就是同步调用。
- 异步就无需等待,而是发送一条消息给消息中间层,消费者根据需求去取消息进行处理。调用者就可以去执行其他的业务了。
这样,发消息和接收消息的人就解耦了。
如图所示:
削峰限流:
先将短时间高并发产生的事务消息存储在消息队列中,然后后端服务再慢慢根据自己的能力去消费这些消息,这样就避免直接把后端服务打垮掉。
举例:在电子商务一些秒杀、促销活动中,合理使用消息队列可以有效抵御促销活动刚开始大量订单涌入对系统的冲击
降低系统耦合度
生产者发送消息到消息队列中去, 消费者处理消息,那么需要消费的系统直接去对应的消息队列中取消息处理即可,而不需要和其他的系统进行有关联。
常见的消息队列有哪些?
- ActiveMQ
- RabbitMQ
- RocketMQ
- Kafka
几种常见MQ的对比:
上面就是各种消息队列的适用场景, 一般来说, 使用 RabbitMQ 会多一点.
2. RabbitMQ 有哪些特点?
- 可靠性: RabbitMQ 使用一些机制来保证可靠性, 如持久化、传输确认及发布确认等。(下一个章节会介绍到)
- 灵活的路由 : 在消息进入队列之前,通过交换器来路由消息。对于典型的路由功能, RabbitMQ 己经提供了一些内置的交换器来实现。针对更复杂的路由功能,可以将多个交换器绑定在一起, 也可以通过插件机制来实现自己的交换器。
- 扩展性: 多个 RabbitMQ 节点可以组成一个集群,也可以根据实际业务情况动态地扩展 集群中节点。
- 高可用性 : 队列可以在集群中的机器上设置镜像,使得在部分节点出现问题的情况下队列仍然可用。
后续我们会介绍一些有关 RabbitMQ 的常见问题。
🎗️🎗️🎗️ 好啦,RabbitMQ简介的分享就到这里了,如果感觉做的还不错的话可以点个赞,关注一下,你的支持就是我继续下去的动力,我们下期再见,拜了个拜~ ☆*: .。. o(≧▽≦)o .。.:*☆