Нужно ли самому контролировать, выполнилась ли задача в очереди?
Использую расширение - 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, чтоб можно было им повторить отправку этой задачи в очередь.
ksnk, ну во всех доках и статьях они настаивают что на проде, надо не одну redis, а как мин несколько - master-slave держать, что как бы намекает.
Плюс вариант с персистентностью на диск, когда все записывается сразу же, может быть не прям быстрым