[TOC] ## 为什么使用消息队列 ### 使用消息队列的好处 1. 业务系统往往要求响应能力特别强,能够起到削峰填谷的作用。 2. 解耦和高可用。如果一个系统“挂了”,则不会影响其他系统的继续运行。 3. 业务系统往往有对消息的高可靠要求,以及有对复杂功能(如ACK)的要求。 4. 增强业务系统的异步处理能力,减少甚至几乎不可能出现并发现象。 ## 案例分析 ### 传统做法弊端 1. 一旦业务处理时间超过了定时器时间间隔,就会导致漏单。 2. 如果采用新开线程的方式获取数据,那么由于处理大量新开线程,会容易造成 服务器宕机。 3. 数据库压力大,易并发。 ![A3164952-D149-4A03-8C6A-343302572B13.png](http://yanxuan.nosdn.127.net/847d35a8875f03c64e38e40b505bb525.png) ### 使用消息队列 先定时从数据库获取数据,然后存入MQ消息队列,最后Job定期扫描MQ消息队列进行处理,有如下优点 1. 业务可注册、可配置。 2. 数据获取规则可配置。 3. 成功消费MQ中的消息才会被确认(ACK),提高可靠性。 4. 大大增强了异步处理业务作业的能力,假设Job扫描后先预取5条消息,然后异 步处理这5条消息,也就是说,这5条消息可能会同时被处理。 ![E7C58026-0A86-4AD2-B382-DCC45DA9FD1D.png](http://yanxuan.nosdn.127.net/74e2ea33f9b2e48c698a507b06789a03.png) ## RAbbitMQ 简介