使用场景
- 异步处理 发送者将消息发送给消息队列之后, 不需要等待消息接收者处理完毕, 而是立即返回进行其他操作. 消息接收者从消息队列中订阅消息后异步处理. 例如在注册流程中通常需要发送验证邮件来确保注册用户的身份合法, 可以使用消息队列使发送验证邮件的操作异步处理, 用户在填写完注册信息之后就可以完成注册, 而将发送验证邮件这一消息发送到消息队列中. 只有在业务流程允许异步处理的情况下才能这么做, 例如上面的注册流程中, 如果要求用户对验证邮件进行点击之后才能完成注册的话, 就不能再使用消息队列.
- 流量削锋 在高并发的场景下, 如果短时间有大量的请求到达会压垮服务器. 可以将请求发送到消息队列中, 服务器按照其处理能力从消息队列中订阅消息来处理.
- 应用解耦 如果模块之间不直接进行调用, 模块之间耦合度就会很低, 那么修改一个模块或者新加一个模块对其他模块的影响就会很小, 从而实现可扩展性. 通常使用消息队列, 一个模块只需要向消息队列中发送消息, 其他模块就可以选择性的从消息队列中订阅消息从而完成调用.