Очереди в Yii2

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
louisvuitton
Сообщения: 196
Зарегистрирован: 2014.02.16, 03:09

Re: Очереди в Yii2

Сообщение louisvuitton »

New_Wind писал(а):
2018.11.30, 17:29
....
Спасибо
А как убедиться, что эти задачи после регистрации будут выполнены?
Что если пользователь запишется в базу, а потом что-то пойдет не так?
Ведь если делать синхронно, мы сначала выполняем все необходимые задачи, потом возвращаем true-результат.
А так получается записали пользователя, а то, что делается после, уже не влияет на результат

(Недавно было нечто такое - после некоторых действий пользователя нужно было записать статистику, добавить баллы реферралу и т.д.), и может это и неправильно?, но я отказывался от afterSave и переписывал на транзакции из-за боязни потерять "хвосты")

Поясните пожалуйста выделенные вопросы

Аватара пользователя
New_Wind
Сообщения: 55
Зарегистрирован: 2015.03.09, 15:15
Контактная информация:

Re: Очереди в Yii2

Сообщение New_Wind »

louisvuitton писал(а):
2018.11.30, 18:11
А как убедиться, что эти задачи после регистрации будут выполнены?
Ну так результат отработки очереди пишете в базу. Если что-то пошло не так (отвалилось какое-нить соединение по таймауту, или вернуло ошибку), то обрабатываете эти сценарии так, как вам надо: повторяете попытку, или отправляете уведомление об ошибке. Тут все от зависит от вашей фантазии. Очереди - крутой инструмент, как вы его будете использовать зависит от вас.

donitoza
Сообщения: 31
Зарегистрирован: 2012.05.30, 17:59

Re: Очереди в Yii2

Сообщение donitoza »

louisvuitton писал(а):
2018.11.30, 18:11
А как убедиться, что эти задачи после регистрации будут выполнены?
Что если пользователь запишется в базу, а потом что-то пойдет не так?
Архитектурно, для Вашего примера следует проработать модель состояний системы, а именно - выработать список статусов, в которых может находиться та или иная задача и обрабатывать их в соответствии с картой переходов состояний (понимания, что необходимо делать дальше для каждого из статусов).

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

Очереди хорошо справляются со следующими паттернами вопросов:
1. Параллельное и равномерное распределение нагрузки для выполнения большого количества однотипных задач. Пример - отправка сообщений 10000 адресатам.
2. Выполнение длительных по времени операций в фоне от основного процесса коммуникации с клиентом. Пример - формирование долгоформирующегося отчета или коммуникация с какими-то медленными или нестабильными системами.
3. Выполнение полезной нагрузки по требованию, а не по расписанию.

И да, главное не забывать, что очереди задач - это не только веб.

Ответить