1.MQ简介
MQ全称 Message Queue (消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。
相比直接通信、MQ的间接通信的优缺点
优点:
解耦:易于维护,比如多加一个需求时只需要将消息发给MQ就能返回了,后面交给MQ去慢慢处理。期间如果有错误,也会在短期修复
异步提速:信息发给MQ就可以返回,其他交给MQ去慢慢处理
削峰填谷:流量突然增大,限制消费速度
缺点:
系统可用性降低
系统复杂度提高
一致性问题
常见的MQ产品:
目前业界有很多的 MQ产品,例如 RabbitMQ、 RocketMQ、ActiveMQ、Kafka、 ZeroMQ、MetaMg等也有直接使用 Redis 充当消息队列的案例,而这些消息队列产品,各有侧重,在实际选型时,需要结合自身需求及 MQ 产品特征,综合考虑。
2. RabbitMQ
2.1 简介
AMQP,即 Advanced Message Queuing Protocol (高级消息队列协议),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。2006年,AMQP 规范发布。类比HTTP.
2.2面试问答
1.RabbitMQ有哪些工作模式
RabbitMQ一般有五种工作模式。
1:简单模式
就是一个生产者一个消费者,中间通过一个队列直接连接。
2:work工作模式
就是有多个消费者消费队列里的消息,队列里的消息只能被一个消费者消费,这样多部署几个消费者,就可以缓解压力,比如过年的时候抢票,抢票成功后会给你发短信,这个时候就可以把发短信的任务放入队列里,然后有多个发短信的服务来处理队列里的任务。
3:pub/sub发布订阅模式
4:Routing路由模式
5:Topics主题模式