Как я могу изменить обработку очереди заданий в Laravel?
У меня есть три работы в моей очереди;
- В
- С
Число повторов для одного из них установлено на 100.
Когда все мои задания терпят неудачу, Laravel запускает задания по следующей схеме;
- А 1
- Б 1
- С 1
а потом;
- А 2
- БИ 2
- С 2
Я хочу изменить это поведение как следующую схему;
- A 100 (к ошибочной таблице)
- Б 1
- C 0
Поэтому я хочу, чтобы предыдущие задания блокировали тик, они достигают количества повторов и затем переходят к следующей работе.
Как я могу добиться этого с системой Laravel's Job?
(Я не могу связать задания на своем программном уровне с помощью метода цепочки. Я бы хотел добиться этого с помощью конфигурации)
2 ответа
Если это задание, вы не можете управлять другим заданием из этого... Задания работают асинхронно. Вы должны сделать вещи синхронно:)
Так что или вы все переводите на одну работу, или вы не можете сделать это по-другому:)
Конечно, вы можете называть свои очереди, работать с определением приоритетов и настраивать только 1 работника... Но это не очень хороший вариант, и вы не можете справиться с этим:)
Кроме того, вы можете уволить работу после выполнения одной работы. Просто переместите создание задания из контроллера (?) В задание после окончания. Я реализовал это решение в моей собственной системе. Только если одна работа сделана, то следующая стрельба
Вы можете использовать Job Events для контроля последовательности, в которой они помещаются в очередь. После успешного завершения задания A задание B запускается через прослушиватель событий, то же самое для задания C. Задание A может повторяться 100 раз без возможности запуска задания B.