1、为什么用消息队列?
场景:
请求数据过来,录入数据库,调用发送接口,响应页面
- 同步处理
-
异步处理:
-
把发送短信的请求放入消息队列,好处是
-
解耦,不需要两个同时在线。
- 可恢复性 系统一部分组件失效不会影响到整个系统。
- 缓冲 有助于控制和优化数据流经过系统的速度,解决了生产消息和消费消息的处理速度不一致的情况(生产大于消费)。
- 灵活性 & 峰值处理能力 雪崩
-
2、消费队列的两种模式
- 点对点模式(一对一,消费者主动拉取数据,消息收到后消息消除)
- 消息生产者生产消息发送到Queue中,然后消息消费者从Queue中取出并消费消息。
- 消息被消费以后,queue中不再存储,所以消息消费者不可能消费到已经被消费的消息。
- Queue支持存在多个消费者,但是对一个消费者只会有一个消息存在。
发布/订阅模式(一对多,消费者消费数据之后不会清除消息)
- 消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。
- 和点对点方式不同,发布到topic的消息会被所有订阅者消费