1、什么是MQ?
2、MQ的作用,应用场景
问题:耦合度过高,通讯成本过高、
作用:解耦、异步、削峰填谷
-
场景一:异步处理(用户注册、ownbank开户)
-
场景二:应用解耦(订单系统&库存系统)
-
场景三:流量削峰(打卡、秒杀)
3、MQ有哪些?
RabbitMQ、RocketMQ、Kafka、ActiveMQ
4、简单的架构图
举例:京东物流
rabitMQ、RocketMQ
5、mq的通讯方式 -
hello-world工作模式:点对点模式
一个生产者、一个消费者、一个队列
-
工作队列模式:work-quene
一个生产者、一个队列、多个消费者
可以解决消费积压问题。
但最终只有一个消费者可以消费消息。
-
发布订阅模式(广播模式)
一个生产者、一个交换机(多个队列)、多个消费者
一个生产者可以被多个消费者共同消费
场景:管理员要给所有用户发送消息、公告
- 路由模式
一个生产者、一个交换机、多个队列、多个消费者 - 主题模式
要消费的路由key可以使用通配符指定,其中*表示任意一个单词,#表示任意多个单词 -
消息确认模式(publish/confirm)
消费者要告诉队列消息消费成功了,然后队列就会删掉该消息,否则该消息一直不删除。
6、消息的可靠性:confirm机制、return机制
(1)、发送的可靠性
(2)、接收的可靠性
消息的可靠性:
- 消息不能丢失
-
消息不能重复
如何避免消息重复消费?
本质上:给每条消息设置一个唯一标识,标识这个消息是否被处理过,如果是消费过的消息就不再处理。
什么是幂等:
多次操作,结果都是一样的
在DB中,CRUD对应的幂等: - 幂等:查询(根据ID查询)、删除(根据ID删除) 更新(条件相同)
- 非幂等:新增
举例:之前ownbanker消息重复消费