Использую Laravel Horizon.
Представим, что есть 20 сайтов, по которым нужно пройтись по всем за +-1 час, просканировать и сохранить результаты в БД. Как это грамотно организовать через очереди?
Нужно удостовериться что задачи по каждому сайту должны идти поочередно. Если в очереди несколько сайтов одновременно, у каждого сайта своя очередь (если сканируется сайт 1 и добавляется в это же время сканирование сайта 2 - остановок в сканировании сайта 1 не должно быть). Чтобы не "ддосить" сайты нужно чтобы задачи выполнялись с каким-то интервалом, желательно распределить равномерно в течение часа.
Я думал сделать это так:
1. Сделать кроны на старт Batch'ей (Bus::batch()) задач и распределить эти 20 сайтов в течение часа (каждые ~3 минуты).
2. У каждого сайта - своя очередь. Т.е. в horizon.php в настройках супервозора будет так:
'queue' => ['site1', 'site2', 'site3' /* ... */, 'site20'],
'balance' => 'auto',
'maxProcesses' => 20, // количество сайтов
Или есть более разумное решение это сделать?