我正在使用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,则作业会成功,但会无限循环运行。
如何正确从队列中删除这些作业?