Laravel-队列作业不会重用吗?

时间:2019-02-15 12:25:24

标签: laravel laravel-queue laravel-jobs

我知道,这个问题很奇怪...

场景: 我有一个Job类,用于发送电子邮件,但是由于在发送之前已选择了电子邮件模板,因此该电子邮件的内容已被修改。

我不知道这是否是事实,但显然Laravel保留了他第一次触发的内容缓存。即使更改属性的值,Job也会发送完全相同的电子邮件。

如果这是真的,我想知道如何使用相同的工作类别发送不同的电子邮件,或者什么是最好的选择。

\ app \ Jobs \ SenderEmail001.php

/**
 * Create a new job instance.
 *
 * @return void
 */
public function __construct($template_id, $subject)
{
    $this->template_id = $template_id;

    $this->subject     = $subject;
}

/**
 * Execute the job.
 *
 * @return void
 */
public function handle()
{
    $template = Template::findOrFail($this->template_id);

    \Mail::send([], [], function($message) use ($template)
    {
        $message
            ->replyTo('source@domain.com', 'Email Source')
            ->from('source@domain.com', 'Email Source')
            ->to('target@domain.com', 'Email Target')
            ->subject($this->subject)
            ->setBody($template->markup, 'text/html');
    });

}

MyController

\App\Jobs\SenderEmail001::dispatch(6, 'subject subject subject')
    ->delay(now()->addSecond(100))
    ->onQueue('default');

1 个答案:

答案 0 :(得分:0)

由于队列工作器是长期存在的进程,因此如果不重新启动,它们将无法识别代码更改。要在部署期间正常重启工作服务器,请运行。

php artisan queue:restart

查看更多:https://laravel.com/docs/5.7/queues#queue-workers-and-deployment