chelkaz
@chelkaz

Как проверить что событие в очереди?

Создал по документации событие и слушатель, на момент создание новой записи в базе. Все работает и уведомления приходят на почту. Но как проверить что оно не выполняется вместе с пользователем в момент добавления, а отложенное?
Сделал так:
Слушатель
namespace App\Listeners;

use App\Events\ElementWasAdded;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Support\Facades\Mail;

class EmailElementConfirmation implements ShouldQueue
{
    use InteractsWithQueue;

    public function __construct()
    {
        //
    }

    public function handle(ElementWasAdded $event)
    {
        //
        $element = $event->element;
        $section = $event->section;
        Mail::send('emails.ElementWasAdded', array('element' => $element, 'section' => $section), function ($message) {
            $message->from('info@site.ru', 'Заголовок письма');
            $message->to('me@mail.com');
            $message->subject('Добавлен элемент');
        });
    }
}


Событие
namespace App\Events;

use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class ElementWasAdded extends Event
{
    use SerializesModels;

    public $element;
    public $section;
    public function __construct($element, $section)
    {
        //
        $this->element = $element;
        $this->section = $section;
    }

    public function broadcastOn()
    {
        return [];
    }
}


И в контроллере
if($table->save()) {
                $element_id = $table->id;
                $section_id = "reviews_section";
                Event::fire(new ElementWasAdded($element_id, $section_id));
            }
  • Вопрос задан
  • 454 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Silm
Создание события отправки письма с задержкой в 5 секунд:
Mail::later(5, 'emails.welcome', $data, function($message)
{
  $message->to('foo@example.com', 'John Smith')->subject('Welcome!');
});


Какой драйвер используете? Если, например. БД, то будете видеть как события появляются в таблице, потом исчезают. Чем обрабатываете очередь? Если запускаете слушателя, он пишет в консоль о выполненном задании.
Ответ написан
Остановить слушатель очереди, запустить скрипт, добавляющий задачу в очередь, проверить таблицу jobs на наличие задачи (если вы используете бд для очереди задач).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы