Laravels Queue\ShouldBeUnique 和 Queue\Middleware\WithoutOverlapping 有什么区别?
What's the difference between Laravels Queue\ShouldBeUnique and Queue\Middleware\WithoutOverlapping?
我有一份工作以某种方式被多次启动。我希望这项工作只启动一次。如果任何其他尝试 运行 作业已经在队列中,我希望那些 运行 中止。
我已经阅读了 Laravel 8 文档,但不知道是否应该使用:
Queue\ShouldBeUnique
(此处记录:https://laravel.com/docs/8.x/queues#unique-jobs)
或者
Queue\Middleware\WithoutOverlapping
此处提到:https://laravel.com/docs/8.x/queues#preventing-job-overlaps
我相信第一个会中止对 运行 作业的后续尝试,而第二个会使其保持排队状态,只是确保它不会 运行 直到第一个作业完成。谁能确认一下?
通过尝试在控制台 运行 同一作业的多个实例进行本地确认 window。
在我的工作 class 中实现 Queue\ShouldBeUnique
接口意味着后续尝试被中止。
而在 app\console\kernel.php
文件中将 ->withoutOverlapping()
添加到我的工作引用的末尾只会阻止它同时 运行ning。如果已经 运行ning.
它不会中止作业
我有一份工作以某种方式被多次启动。我希望这项工作只启动一次。如果任何其他尝试 运行 作业已经在队列中,我希望那些 运行 中止。
我已经阅读了 Laravel 8 文档,但不知道是否应该使用:
Queue\ShouldBeUnique
(此处记录:https://laravel.com/docs/8.x/queues#unique-jobs) 或者Queue\Middleware\WithoutOverlapping
此处提到:https://laravel.com/docs/8.x/queues#preventing-job-overlaps
我相信第一个会中止对 运行 作业的后续尝试,而第二个会使其保持排队状态,只是确保它不会 运行 直到第一个作业完成。谁能确认一下?
通过尝试在控制台 运行 同一作业的多个实例进行本地确认 window。
在我的工作 class 中实现 Queue\ShouldBeUnique
接口意味着后续尝试被中止。
而在 app\console\kernel.php
文件中将 ->withoutOverlapping()
添加到我的工作引用的末尾只会阻止它同时 运行ning。如果已经 运行ning.