【问题标题】:Laravel Queue using Beanstalkd Failing使用 Beanstalkd 失败的 Laravel 队列
【发布时间】:2015-11-13 04:15:05
【问题描述】:

我尝试在每次用户注册时使用队列并向他们发送电子邮件进行验证。

我使用 Laravel 5.1 成功地做到了 我只是在徘徊,如果出现错误,如何停止当前队列,然后当我修复它时,我从最后一个队列重新启动作业?

这样的错误怎么样:

[InvalidArgumentException]
View [emails.versify_email] not found.



[InvalidArgumentException]
View [emails.versify_email] not found.



[InvalidArgumentException]
View [emails.versify_email] not found.

我在宅基地尝试过使用:

 public function failed(){
    //I've tried send email but it not sending
 }

或在 AppServiceProvider 处

Queue::failing(function ($connection, $job, $data) {
        $user ='mymail@gmail.com';
        Mail::send('emails.fail_queue', ['user' => $user], function ($m) use        ($user) {
            $m->subject('Failing:' . $user)
                ->to($user);
        });
    });

它们都没有工作。 如果在生产中发生这种情况,我该怎么办?

【问题讨论】:

  • “如果出现错误则停止当前队列”,您的意思是停止当前作业并稍后重试吗?还是您的意思是停止整个队列(以及其中的所有作业)?
  • 停止当前作业并稍后重试。谢谢

标签: php laravel


【解决方案1】:

当处理程序抛出异常时,Laravel 会尝试将作业释放回队列,除非它被显式删除。

https://github.com/laravel/framework/blob/5.1/src/Illuminate/Queue/Worker.php#L198-L227

您可以使用 $delay 参数延迟放回队列。或者,如果您能够发现问题,最好自己埋头工作。

$this->job->bury()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 2014-11-19
    • 2017-02-07
    • 2014-06-17
    • 1970-01-01
    • 2018-03-15
    • 2018-08-16
    相关资源
    最近更新 更多