Как я могу изменить обработку очереди заданий в 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.

Другие вопросы по тегам