作用
- 异步调用:
举例:用户注册完成后,需要写入数据库,还需要发送短信和邮件,每个需要50ms,场景如下: 同步执行:50+50+50=150ms 写入数据库后异步执行发送邮件和短信:50+50=100ms 写入数据库后将消息写入mq,然后返回结果,再由mq去调用相关邮件和短信接口完成流程。由于写入mq的时间非常短,用户实际上等待的时间是:50ms
- 应用解耦:
举例:订单系统和库存系统直接可以采用消息队列,订单系统发送消息,库存系统订阅此消息。
- 流量削峰:
猜测阿里之类的电商网站就使用了此特质 举例:秒杀系统--10万请求秒杀1万产品,可以把用户请求放入消息队列,然后给消息队列定长,设定10000长度,未进入队列的则直接返回信息--秒杀失败。
重要概念
- 消息代理 message broker
- 目的地 destination
发送模式/消息通讯机制
- 点对点式
- 消息发送者发布消息,消息代理将其放入一个队列,消息接收者从队列中获取消息,消息被读取后则移除消息队列。
- 消息只有唯一的发送者和接受者,但是不是只有唯一的接收者。
- 发布订阅式
发布者发送消息到主题,多个接受者(订阅者)监听(订阅)这个主题,那么所有接受者会在消息到达时同时接到消息。