Задать вопрос
@Nolan81
программист

Нужно ли самому контролировать, выполнилась ли задача в очереди?

Использую расширение - yiisoft/yii2-queue.
Драйвер планирую - Redis. На базе списка.
Возьмем такую задачу - регистрация пользователя, и необходимость отправить ему письмом email с кодом подтверждения почтового ящика.

Какой видится workflow, судя по тому расширению.

1) В модели пользователь заведу флаг isEmailSent (= 0 по умолчанию), того что письмо было отправлено
2) При создании модели (insert новой записи) отправляю в очередь задачу Отправки письма - Yii::$app->queue->push(new SendEmail(['to' => $email, ...])

Теперь по крону например, будут доставаться воркером эти задачи, и каждая задача:
3) отправляет письмо
4) делает пометку пользователю, что ему отправили (isEmailSent=1)

Получается, теперь, если вдруг редис упадет и вся его инфа пропадет, то
6) по крону, по задержке, еще смотрим этих людей с isEmailSent==0, чтоб можно было им повторить отправку этой задачи в очередь.

Так надо делать?
  • Вопрос задан
  • 126 просмотров
Подписаться 2 2 комментария
Подписчики вопроса 2 К ответам на вопрос (0)