# queue_consumer **Repository Path**: phpXu/queue_consumer ## Basic Information - **Project Name**: queue_consumer - **Description**: 基于workerman-redis 消费队列中间件 - **Primary Language**: PHP - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 0 - **Created**: 2021-06-19 - **Last Updated**: 2025-07-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # queue_consumer #### 介绍 基于workerman-redis 消费队列中间件,可以同时消费多个队列,并发控制、失败自动重试。 #### 优势: * 1.配置推送的url地址,像写微信支付回调逻辑一样,只需接收中间件推送的队列数据,进行处理业务逻辑即可 * 2.多个队列,统一管理,同时消费,不需要再写多个php cli 进行消费,容易监听每个队列消费情况 * 3.使用简单,做好配置,直接启动即可 * 4.可以进行简单并发控制, 如果想使用redis队列的先进先出原则,可以将 concurrent 改为false 运行环境要求PHP7.1+,兼容PHP8.0。 * workerman 3.x 以上 ## 安装 * git clone https://gitee.com/phpXu/queue_consumer.git * composer install * ``windows: 配置php环境变量 双击start_for_win.bat 即可 或 linux: php start.php start -d`` ## 功能特性 * 非阻塞消费,异步执行 * 多进程执行消费 * 消费失败后,自定义重试次数 * 消费失败记录 ## 开启服务 ## 写入队列 * 可以参考push.php这个demo ## 配置说明 ``` //链接信息 'conn'=>[ 'host' =>'127.0.0.1', #redis连接地址 'port' =>'6379', #redis连接端口 'auth' =>'', #redis密码 'db' =>1, #redis数据库 'timeout'=>50, #最大等待时间 ], //异步进程配置 'asyn_task'=>[ 'count'=>10, #异步执行任务进程数量 ], //需要监听的队列 'queue'=>[ [ "queue_name" => "queue:order_status1@queue", //要监听的redis 队列 "request_url" => "http://127.0.0.1/", //接收队列数据的地址 http(https) "request_timeout"=> 30, //请求超时时间, 'concurrent' =>true, //是否并发执行 "retry_times" => [5, 30], //失败后重试 5 代表 5秒后重试 30 秒后重试 .... "desc" => "" //备注当前队列的说明(无意义) ], [ "queue_name" => "queue:order_status2@queue", "request_url" => "http://127.0.0.1/", "request_timeout"=> 30, 'concurrent' =>true, "retry_times" => [60, 120], "desc" => "" ], [ "queue_name" => "queue:order_status3@queue", "request_url" => "http://127.0.0.1/", "request_timeout"=> 30, 'concurrent' =>false, "retry_times" => [60, 120], "desc" => "" ], ] ``` ## 鸣谢 * [WorkerMan](https://www.workerman.net/)