iqny / queue
There is no license information available for the latest version (v1.0.17) of this package.
v1.0.17
2022-02-25 09:02 UTC
Requires
- php: >=7.1
- ext-amqp: *
- iqny/rocketmq-sdk: ~1.0
- predis/predis: ~1.0
This package is auto-updated.
Last update: 2024-10-29 05:54:02 UTC
README
redis 支持php-redis扩展,predis。默认安装predis,如果选择redis扩展需要自行安装
rabbitmq 支持php-amqp。如果选择rabbitmq需安装php-amqp扩展按需求安装对应版本:
redis扩展:http://pecl.php.net/package/redis
amqp扩展:http://pecl.php.net/package/amqp
选择rabbitmq做队列,需要安装下php-signal-handler扩展,因为php-amqp在consume()阻塞情况下pcntl_signal失效 【建议安装】https://github.com/rstgroup/php-signal-handler
第一步:composer require iqny/queue
第二步:php artisan vendor:publish --provider="Qihu\Queue\QueueQihuProvider"
第三步:在.env文件添加如下配置
QIHU_DRIVE=rabbitmq
QIHU_REDIS_HOST=127.0.0.1
QIHU_RETRY_TIME=20
QIHU_REDIS_DRIVE=redis
QIHU_REDIS_PORT=6379
QIHU_REDIS_PASSWORD=null
QIHU_RABBITMQ_HOST=127.0.0.1
QIHU_RABBITMQ_PORT=5672
QIHU_RABBITMQ_LOGIN=
QIHU_RABBITMQ_PASSWORD=null
QIHU_RABBITMQ_EXCHANGE=my_exchange
QIHU_RABBITMQ_VHOST="/"
QIHU_ROCKETMQ_HOST=127.0.0.1
QIHU_ROCKETMQ_ACCESS_KEY=
QIHU_ROCKETMQ_SECRET_KEY=
QIHU_ROCKETMQ_INSTANCE_ID=
QIHU_ROCKETMQ_TOPIC=
QIHU_ROCKETMQ_GROUP_ID=
QIHU_ROCKETMQ_NUM_OF_MESSAGES=1
QIHU_ROCKETMQ_WAIT_SECONDS=1
第四步:操作完以上步骤,在app/Queueqihu目录下编写任务
队列特点:
1、支持平滑的重启队列重新读取配置文件
2、在默认驱动情况下,可以配置某个队列启动指定驱动[redis|rabbitmq]
3、rabbitmq默认consume阻塞,是否要ack根据当前执行的任务返回是true|false
4、默认队列任务每1个小时自动退出1次,防止内存溢出。
5、可以配置队列在执行指定任务次数自动退出,防止内存溢出
6、日志目录在storage/logs/queue,按每天创建目录,
支持多种日志类型记录:debug|info|alert|notice|warning|critical|emergency|error
7、使用redis驱动,可以开启失败重试。
8、rabbitmq、redis连接异常断开重启机制,可配置时间
命令:
php artisan queue:qihu start 启动
php artisan queue:qihu start --daemon=1 守护进程启动
php artisan queue:qihu stop 停止
php artisan queue:qihu restart 重启
Example
公共函数:qihuPush($queueName,$msg);
<?php for ($i = 0; $i < 10000; $i++) { $msg = [ 'message_order' => $i ]; qihuPush('order', $msg); $msg = [ 'message_test' => $i ]; qihuPush('test', $msg); $msg = [ 'message_log' => $i ]; qihuPush('log',$msg); } ?>