Как я могу изменить обработку очереди заданий в Laravel?

У меня в очереди три задания;

  • A
  • B
  • C

Количество повторных попыток для одного из них установлено на 100.

Когда все мои задания терпят неудачу, Laravel запускает задания по следующей схеме:

  • A 1
  • B 1
  • C 1

а потом;

  • A 2
  • B 2
  • C 2

Я хочу изменить это поведение по следующей схеме:

  • 100 (к неудачному столу)
  • B 1
  • C 0

Итак, я хочу, чтобы предыдущие задания блокировали tikk, они достигли своего количества повторных попыток, а затем перешли к следующему заданию.

Как я могу добиться этого с помощью системы заданий Laravel?

(Я не могу связать задания на моем программном уровне с помощью цепного метода. Я хотел бы добиться этого с помощью конфигурации)


person Süha Boncukçu    schedule 13.02.2018    source источник
comment
если что-то нужно делать синхронно, то зачем ставить их как работу?   -  person Dhaval Chheda    schedule 13.02.2018
comment
Потому что я не кодировал проект   -  person Süha Boncukçu    schedule 13.02.2018


Ответы (2)


Если это задание, вы не можете управлять другим заданием из этого... Задания выполняются асинхронно. Вы должны делать все синхронно :)

Так что или вы все перемещаете в одну работу, или по-другому не можете :)

Конечно, вы можете назвать свои очереди и запустить их с приоритетом и настроить только 1 воркера... Но это не очень хороший вариант, и вы не можете с этим справиться :)


Кроме того, вы можете уволить работу после того, как одна работа будет выполнена. Просто переместите создание задания с вашего контроллера (?) в задание после завершения. У меня это решение реализовано в моей собственной системе. Только если одна работа сделана, то следующая увольняется

person Mateusz Pęczkowski    schedule 13.02.2018
comment
Я предполагаю, что нет никакого способа запускать задания последовательно, как вы указали. Я воспользуюсь вашим ответом и реализую свою собственную архитектуру. Каждое задание получит следующее задание от passive jobs table и добавит его в очередь заданий. - person Süha Boncukçu; 13.02.2018

Вы можете использовать события заданий, чтобы управлять последовательностью, в которой они очередь. Как только задание A успешно завершено, задание B запускается через прослушиватель событий, то же самое для задания C. Задание A может повторяться 100 раз без возможности запуска задания B.

person Community    schedule 13.02.2018