Это продолжение Laravel - Выполнение заданий в последовательности
Я решил пойти с лимитом скорости повторного выполнения.Код ниже
jobClass {
protected $subscription;
public function __construct(Subscription$subscription) {
$this->subscription= $subscription;
}
public function handle() {
Redis::funnel('mailingJob')->limit(1)->then(function () {
// Job logic...
(new Mailer($this->subscription))->send();
}, function () {
// Could not obtain lock...
return $this->release(10);
});
}
}
И код контроллера выглядит следующим образом.
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\Subscriptions;
class MailController extends Controller
{
public function sendEmail() {
Subscriptions::all()
->each(function($subscription) {
SendMailJob::dispatch($subscription);
});
}
}
Теперь, когда я запускаю очередь, некоторые из них работают, остальные (около 90%) не работают с приведенным нижеошибка в горизонте.
SendMailJob предпринималась слишком много раз или слишком долго.Задание может быть ранее истекло.
Что мне не хватает?Пожалуйста, кто-нибудь направит меня в правильном направлении.
Моя цель - одновременно запускать только одно задание типа.