bcw/mq-process

1.0.1 2017-04-10 06:40 UTC

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执行速度