Queue介绍

Easyswoole封装实现了一个轻量级的队列,默认以Redis作为队列驱动器。

可以自己实现一个队列驱动来实现用kafka或者启动方式的队列存储。

从上可知,Queue并不是一个单独使用的组件,它更像一个对不同驱动的队列进行统一封装的门面组件。

开始安装

  1. composer require easyswoole/queue

使用流程

  • 注册队列驱动器
  • 设置消费进程
  • 生产者投递任务

Redis 驱动示例

  1. use EasySwoole\Redis\Config\RedisConfig;
  2. use EasySwoole\RedisPool\RedisPool;
  3. use EasySwoole\Queue\Driver\Redis;
  4. use EasySwoole\Queue\Queue;
  5. use EasySwoole\Queue\Job;
  6. $config = new RedisConfig([
  7. 'host'=>'127.0.0.1'
  8. ]);
  9. $redis = new RedisPool($config);
  10. $driver = new Redis($redis);
  11. $queue = new Queue($driver);
  12. go(function ()use($queue){
  13. while (1){
  14. $job = new Job();
  15. $job->setJobData(time());
  16. $id = $queue->producer()->push($job);
  17. var_dump('job create for Id :'.$id);
  18. \co::sleep(3);
  19. }
  20. });
  21. go(function ()use($queue){
  22. $queue->consumer()->listen(function (Job $job){
  23. var_dump($job->toArray());
  24. });
  25. });