Используйте задержку для запуска задания в определенное время.
EliQueueIdentity::dispatch($EliIdentity->id)
->onQueue('eli')
->delay($this->scheduleDate());
Помощник для расчета времени, обработки граничного случая в период с 00:00 до 01:00, когда он может задержать его на целый день. Пока не указано, как обращаться с занятым, приведен псевдо-пример, который вы можете реализовать.
private function scheduleDate()
{
$now = Carbon::now();
if (! $this->busy()) {
return $now;
}
// check for edge case of 00:00:00 to 01
if ($now->hour <= 1) {
$now->setTime(1, 0, 0);
return $now;
}
return Carbon::tomorrow()->addHour();
}