bcw / mq-process
bcw-mq-swoole
1.0.1
2017-04-10 06:40 UTC
Requires
- php: >=5.4
- ext-swoole: >=1.8.9
This package is not auto-updated.
Last update: 2024-09-28 20:56:54 UTC
README
- 多进程消费
多消费者,并行处理
- 这可能是最常见的一种场景。消息产生后堆积到队列中,由多个消费者worker共同处理这些消息,以并行方式提高处理效率。
- 在这种场景下,无论选择Exchange的fanout还是direct类型,都可以实现。略有不同的是,fanout类型的话,在一个exchange上不要随意绑定队列。direct类型的话,则需要每条消息自己处理好routing_key。
描述
- 最初使用过PHP自带的pcntl,发现虽然可以实现,但效果和稳定性不太理想。
- 利用swoole_process::daemon守护进程
- 利用swoole的异步信号监听,worker进程退出后会自动重启
- 利用sswoole_process::wait回收结束运行的子进程,防止成为僵尸进程
- 子进程过大主动杀死,防止业务代码内存泄漏
- rabbitmq多种实现(多消费者,并行处理;一条消息多种处理,临时队列;发布订阅)
- 支持composer,可以与任何框架集成
示例
composer install
//往队列添加job
php test/testJobs.php
## 性能
* 瓶颈: rabbitmq队列存储本身和job执行速度