halaei / lqrm
Laravel 队列 Redis 模块
dev-master
2018-10-06 18:23 UTC
Requires
- php: >=7.1.0
- illuminate/queue: >=5.7
Requires (Dev)
- illuminate/redis: >=5.7
- mockery/mockery: ^1.0
- orchestra/testbench: 3.7.*
- phpunit/phpunit: ^7.0
- predis/predis: ^1.1.1
This package is auto-updated.
Last update: 2024-09-07 07:09:11 UTC
README
这是 Laravel 队列 Redis 驱动的 PHP 驱动。
为什么使用 lqrm?
因为
- 阻塞弹出现在比以前更可靠。
- 阻塞弹出现在也适用于延迟和保留作业。
- 延迟和保留作业的计时器位于服务器端,具有毫秒级精度。这意味着您不必担心同步您的 PHP 和 Redis 服务器,如果您的项目分布在不同的服务器上。此外,这使得
retry_after
和block_for
配置相互独立。 - Laravel 队列现在也可以用于其他编程语言和框架。请随意将其移植到您喜欢的语言中。
安装
首先通过 composer 安装该软件包
composer require halaei/lqrm
然后向您的 config/app.php 中添加服务提供者
Halaei\Lqrm\LaravelRedisQueueServiceProvider::class
要使用此软件包与 laravel/horizon
一起,请使用以下服务提供者
最后,在 app/queue.php 中将您的 Redis 队列连接的驱动程序更改为 lqrm
,并将 block_for 设置为某个小的整数
'redis' => [
'driver' => 'lqrm', // <<< switch to lqrm driver
'connection' => 'default',
'queue' => 'default',
'retry_after' => 90,
'block_for' => 10, // <<< set block_for
],
请注意,如果您需要在上述配置数组中增加 'block_for',您还应增加 queue:work
命令中的 --timeout。
详细考虑
以下是从原始 Laravel 5.7 驱动程序迁移到 lqrm
时的行为变化。我相信这些变化是最佳选择,并且可能对您的项目影响可忽略。
- 在 5.7 中,将
block_for
设置为 0 表示永久阻塞。在 lqrm 中,将blocking_for
设置为 0 或任何小于 1 的值表示不进行任何阻塞。 - 使用 5.7 与 horizon 一起,调用 pop() 可能会触发 JobsMigrated() 事件,如果它从延迟和保留队列迁移作业。
lqrm
不触发此事件。 - 在 5.7 中,您可以选择性地禁用从保留队列中迁移过期作业。这在
lqrm
中不受支持。