Beanstalkd队列失败或无限运行

时间:2019-01-10 14:07:07

标签: laravel beanstalkd

我正在使用Beanstalkd队列在Laravel 5.3应用程序中部署作业。我使用Laravel Forge来管理服务器。

我有以下两种情况之一:

1)我设置了最大尝试次数,这会使每个推送到队列的作业都放置在失败的作业表上-即使其任务成功完成,也会导致在作业表上出现此异常:

Illuminate\Queue\MaxAttemptsExceededException: A queued job has been attempted too many times. The job may have previously timed out

这在我的错误日志中:

Pheanstalk\Exception\ServerException: Server reported NOT_FOUND

2)如果删除最大尝试次数,则作业将成功运行,但会无限循环。

我假设我没有从队列中正确删除这些作业,因此在方案1中,该作业失败了,因为只想继续运行。

我的控制器将我的工作像这样推送到队列:

  Queue::push('App\Jobs\UpdateOutlookContact@handle', ['userId' => $cs->user_id, 'memberId' => $member->id, 'connection' => $connection]);

这是我工作的句柄功能:

 public function handle($job, $data)
{
    Log::info('Outlook syncMember Job dispatched');

    $outlook = new Outlook();
    $outlook->syncMember($data['userId'], $data['memberId'], $data['connection']);
    $job->delete();
} 

这是Laravel Forge管理面板中我的队列配置的图片。我当前正在使用默认队列。如果将“ Tries”更改为ANY,则作业会成功,但会无限循环运行。
enter image description here

如何正确从队列中删除这些作业?

0 个答案:

没有答案