大家好!我是Andy哥。作为有8年Java开发经验和2年微服务开发架构的开发者 技术交流探讨可以加我微信:bruce521java,我们一起共同成长!
我认为rocketmq主要有以下应用场景:
1.削峰填谷
应对如秒杀等大型活动时带来较高的流量冲击,如果没做相应的保护,将导致系统超负荷甚至崩溃。如果接口限制太过导致大量请求失败而影响用户体验,利用MQ 超高性能的消息处理能力来解决此类问题。如果redis是针对分布式缓解大量读,那么rocketmq是应对大量写场景的利器
2.异步解耦
通过mq完成上、下游业务系统的松耦合设计,服务部分节点异常都不会影响到核心交易系统的正常运转,还可以通过mq重试队列实现异常重试处理。
3.顺序消息
MQ提供的顺序消息(分区有序)即保证消息的先进先出,可以应用于交易系统中的订单创建、支付、退款等流程。
4.分布式事务消息
分布式业务场景需要引入 MQ 的分布式事务,既实现了系统之间的解耦,又可以保证最终的数据一致性。将大事务拆分成多个小事务,减少系统间的交互,既高性能又可靠。再利用MQ 的Ack确认机制保证可靠传输与多副本技术确保消息不丢最终确保数据的最终一致性。
5.订单通知发货
重试队列可以重试16次,可以减少频繁访问数据库
6.订单超时取消
延时队列
7.定时消息
延时队列实现指定时间开启活动通知
8.异常处理告警
订单发货通知重试超过上限进入到死信队列短信微信通知人工处理
9.可靠消息推送
再次感谢你们阅读Andy哥的文档,我们一起做更好的自己