Laravel - очереди заданий не используются повторно? - PullRequest
0 голосов
/ 15 февраля 2019

Я знаю, вопрос очень странный ...

Сценарий: у меня есть класс Job, который отправляет электронное письмо, но содержимое этого электронного письма изменяется, так как шаблон электронного письма выбран ранее.Быть отправленным.

Я не знаю, правда ли это, но, очевидно, Laravel поддерживает кеш контента, который он запустил впервые.Даже изменяя значение свойств, Job отправляет одно и то же электронное письмо.

Если это так, я хотел бы знать, как использовать один и тот же класс 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 голосов
/ 01 марта 2019

Поскольку работники очереди являются долгоживущими процессами, они не будут распознавать изменения кода без перезапуска.Чтобы корректно перезапустить рабочих во время развертывания ... запустить.

php artisan queue:restart

подробнее: https://laravel.com/docs/5.7/queues#queue-workers-and-deployment

...