[TOC] ## 消息队列应用场景 > 主要是为了解决**异步处理**,**应用解耦**,**高并发削锋**等问题 > 1. **异步处理**:短信群发,比如群发10000人,如果用面向过程方式,就会等很久。用消息队列的方式,就是创建好群发任务,消息队列慢慢处理,期间用户可以观看群发的状态。 > 2. **应用解耦**:发送邮件,比如用户注册账号时候,需要邮件验证,往往邮件需要5-10秒甚至更长时间,如果用户点击注册的过程,慢慢等待的话,用户体验不好,这个时候可以交给消息队列来处理。 > 3. **高并发削锋**:一般秒杀时订单会特别的多,但是数据库无法一次性的处理这么多,所以可以先存在消息队列中,无论我进的速度多快,出的速度都是一定的。 ## 消息队列如何实现 > 实现有3种方式 > 1. 利用redis的**List的阻塞特性**,或者“**发布订阅**”功能 实现消息队列 > 2. 使用swoole进行异步消息处理。 > 3. 利用crontab(守护进程)进行后台执行,可读取mysql、redis等进行任务