Laravel队列工作不按预期行事

时间:2018-01-17 11:33:05

标签: php laravel queue jobs

情景

我在youtube上关注如何设置队列工作人员,同时阅读最新的laravel文档。我已经正确地执行了每一步,直到我现在必须运行工人。

然而,运行worker会执行255次作业。我不确定它是否会失败"但我想它是因为电子邮件没有被发送",但没有任何事情发生。

我的问题与此类似:https://laracasts.com/discuss/channels/laravel/laravel-54-event-queue-255-attemps-and-freeze-no-listener-actions-done

但该用户未能正确回答他们自己的问题。

我的文件

Auth Controller:

    public function register(Request $request)
    {
        $validatedData = $request->validate([
            'full_name' => 'required',
            'email'     => 'required|unique:users',
            'password'  => 'required|confirmed',
        ]);

        $user = User::create($validatedData);

        //Authenticate the user
        Auth::login($user);

        //Queue the email
        EmailNewUsers::dispatch();

        return 'Email Sent!';

        //Redirect User
//        return redirect('admin/dashboard');
    }

EmailNewUsers工作:

class EmailNewUsers implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        MailController::UserRegistered();
    }
}

MailController

class MailController extends Controller
{
    public static function UserRegistered()
    {
        Mail::to(Auth::user())->send(new UserRegistered());
    }
}

UserRegistered Mailable

class UserRegistered extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('emails.UserRegistered');
    }
}

问题

为什么队列工作者运行255次作业然后不执行任何操作..?

修改

所以我通过改变任何东西来实现它...刚刚出去吃午饭回来了,刷新了它的工作......大约10次尝试,然后回到同样的错误。

这一次,我尝试制作一份名为" TestJob"我按照教程设置了测试工作,并且它正常工作,然后30秒后,当我重新执行相同的工作时,它停止工作。

enter image description here

注意第一次处理的时间 - >处理然后再次出错。我不确定这是否有帮助,但我认为id添加它。

2 个答案:

答案 0 :(得分:0)

MailController有错误,append if (m.Msg == 0x0203 && OwnHandle == m.HWnd) ... 表和查看错误日志

答案 1 :(得分:0)

如果您不希望队列尝试255次,则需要定义必须尝试的次数。

php artisan queue:work --tries=3

如果Job在3次尝试后失败,则将在'failed_jobs'表中插入一行。在“例外”列中查找错误。

如果您没有“ failed_jobs”,请运行此命令

php artisan queue:failed-table

然后运行

php artisan migrate