refactor: Workerman 消费改用 Laravel Queue Worker,database/redis 统一支持(实测 redis 消费通过);默认消费 default,ai 队列;WORKERMAN_QUEUES/MAX_TRIES/TIMEOUT 配置;2 个队列消费测试

This commit is contained in:
ak
2026-08-11 19:27:43 +08:00
parent 34ea046906
commit 1c8a801238
16 changed files with 164 additions and 54 deletions
+7 -2
View File
@@ -92,8 +92,13 @@ php artisan workerman:serve start # 队列消费者 × N + WebSocket :8787
php artisan workerman:serve stop
```
- 队列消费者在常驻进程内复用 Laravel 容器,省去每任务的框架启动开销LLM 调用主路径
- 任务统一实现 `App\Blog\Jobs\AiJob` 接口(`handle(LlmClient)`),Workerman 反序列化执行
- 消费者复用 Laravel `Queue\Worker`**database / redis 队列统一支持**,常驻进程内框架只启动一次(省去每任务的启动开销)
- 任务统一实现 `App\Blog\Jobs\AiJob` 接口(`handle(LlmClient)`),依赖由容器自动注入
- 队列选择:
- database(默认):`WORKERMAN_QUEUE_CONNECTION=database`
- redis`WORKERMAN_QUEUE_CONNECTION=redis` 并确保 `QUEUE_CONNECTION=redis``REDIS_*` 配置正确;`redis` 连接的 `block_for` 建议设为 `0`(配合 1s 轮询,避免阻塞 Workerman event loop
- 消费队列:`WORKERMAN_QUEUES=default,ai`ai 队列为 AI 审核/润色任务)
- 失败重试:`WORKERMAN_MAX_TRIES`(默认 3),超时 `WORKERMAN_TIMEOUT`(默认 60s),重试耗尽进 `failed_jobs`
- 降级路径:`php artisan queue:work` 照常可用(同一队列)
## 测试