【发布时间】:2018-10-26 17:54:13
【问题描述】:
这是一个后续 Laravel - Running Jobs in Sequence
我决定使用 redis 速率限制。代码如下
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 尝试次数过多或运行时间过长。这份工作可能有 以前超时。
我错过了什么?请有人指导我正确的方向。
我的目标是一次只运行一个类型的作业。
【问题讨论】:
标签: laravel redis laravel-5.6 laravel-horizon