Событие прослушивания событий базы данных Lumen исчезает - PullRequest
0 голосов
/ 10 октября 2019

Основываясь на документации по событиям Laravel, у меня сложилось впечатление, что я могу асинхронно создать очередь событий, добавив «Implements ShouldQueue» на слушателя.

namespace App\Listeners;

use Log;
use App\Events\MeetEntryConfirmationEvent;
use App\Mail\MeetEntryConfirmation;
use Illuminate\Contracts\Queue\ShouldQueue;

class MeetEntryConfirmationListener implements ShouldQueue
{
    /**
     * Create the event listener.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Handle the event.
     *
     * @param  MeetEntryConfirmationEvent  $event
     * @return void
     */
    public function handle(MeetEntryConfirmationEvent $entryEvent)
    {
        Log::debug('Attempt to send MeetEntryConfirmationEvent');
        // Do time consuming stuff
    }
}

Мое событие реализовано таким образом:

class MeetEntryConfirmationEvent extends Event
{
    use SerializesModels;

    public $entry;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct(MeetEntry $entry)
    {
        $this->entry = $entry;
        Log::debug('Created MeetEntryConfirmationEvent');
    }
}

И я отправляю их вот так.

event(new MeetEntryConfirmationEvent($entry));

Я установил QUEUE_DRIVER в базу данных, там есть таблица заданий. Когда событие отправляется, кажется, что оно работает правильно, потому что оно возвращается немедленно. Когда у меня было это в режиме синхронизации, работа заняла бы 8 секунд, так что это больше не происходит.

Однако таблица заданий никогда не получает строку в ней, и когда я запускаю работника очереди, ничего не происходит, задание не выполняется.

Я также пытался скопировать файл config / queue.php из Laravel в мое приложение lumen, но, похоже, это не имеет значения. Раньше эта работа случалась, когда она была в драйвере синхронизации, и когда я не использовал ShouldQueue.

...