Задать вопрос
zvermafia
@zvermafia
WebDev

Почему очереди не срабатывают без команды artisan queue:listen в LARAVEL?

Сделал отправку кода активаций аккаунта на email через очередей (Queue). Это должно срабатывать когда пользователь регистрируется на сайте. Сообщения приходят (это сробатывает тоько) когда я на сервере выполняю команду artisan queue:listen. Да это еще притом что регистрации сделанные перед этой командой, вообще не приходят. Приходят только те которые сделаны когда уже выполнено команда artisan queue:listen.

А не должно ли это работать и без artisan queue:listen?!

Да еще в терминале когда уже запущено artisan queue:listen вводится (без остановки):
[Illuminate\Database\Eloquent\ModelNotFoundException]                
No query results for model [Cartalyst\Sentinel\Users\EloquentUser].

Это нормально?

P.S. Я просто еще не разбираюсь вообще как работает очереди, но очень хочется использовать новые технологии (ну для меня относительно :))

UPD: по поводу ошибок в терминале! Я в очередь отправлял объекты полученное из Sentinel и Activation (из пакета cartalys/sentinel), а оказывается что так делать нельзя...
Короче надо было отправлять только ID пользователя и через нее получат данные пользователя в классе. То есть в app/Jobs/SomeQueueClass.php (методы __consturct($user_id) и handle()).
  • Вопрос задан
  • 2256 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Да, это нормально - так и должно работать.
Принцип очереди такой: Вы в трубку (tube, channel) напихиваете своих небольших задачек (например - отправка мыла одному пользователю), в это время висит процесс, который слушает вашу трубку и как только в ней появились задачки - начинает их обрабатывать.
Если нагрузка у вас не большая или не хочется с очередью играться - можно в качестве драйвера поставить "sync" - сообщение будет уходить как обычно.

Если же очереди нужны - рекомендую почитать про демонизацию процесса слушателя или про супервизора
laravel.com/docs/5.1/queues#supervisor-configuration
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы