# Laravel队列应用场景示例 **Repository Path**: loxi-open-source/laravel-queue-example ## Basic Information - **Project Name**: Laravel队列应用场景示例 - **Description**: Laravel队列应用场景示例 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2024-10-03 - **Last Updated**: 2024-10-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

Laravel队列应用场景-系列教程

## 应用场景 ### 阶梯降频轮询 例如有这样的场景,某电商系统的订单支付状态需要和上游的支付系统保持实时同步,需要每秒检查一次订单状态,如果订单状态为未支付,则继续检查,直到订单已完成。 然而针对每一笔订单,每秒检查一次会对服务器和上游API造成很大的负载。 如果我们能**动态调整检查频率**,比如前五次尝试中每1秒检查一次订单状态, 然后在接下来的五次尝试中每5秒检查一次,依此类推。这样**既能减少服务器和外部API的负载,又能确保及时更新**。 我们给他起个名字叫做**阶梯降频轮询**。 真实的例子比如对接支付宝时,支付成功的异步通知会逐渐减低回调频次通知调用方。 > 支付宝文档示例 > > 在进行异步通知交互时,如果支付宝收到的应答不是 success ,支付宝会认为通知失败,会通过一定的策略定期重新发起通知。通知的间隔频率为:4m、10m、10m、1h、2h、6h、15h。 本教程将带您一步步实现秒级别的阶梯降频轮询出队列方案。 实际效果:

logo

logo

#### 1. 项目初始化 ```shell composer install ``` #### 2. 配置 .env ```shell cp .env.example .env ``` #### 3. 生成 key ```shell php artisan key:generate ``` #### 4. 数据库准备 ```shell # 创建表结构 php artisan migrate # 插入测试数据 php artisan db:seed ``` #### 5. 测试出队列效果 ```shell # 先开始队列监听worker php artisan queue:work --sleep=1 # 开一个新的终端窗口,执行测试命令,这个命令会发送一条消息到队列 php artisan app:test ``` #### 6. 查看队列执行情况 ```shell # 打开日志,查看队列执行情况 tail -f storage/logs/laravel.log ```