I do similar and it works perfectly. My method of dispatch is slightly different, and I space the jobs at 10 minute intervals
class AdviseP44Job implements ShouldQueue
{
//
if(empty($drop->TrackingATA) && $this->limit > 0) {
AdviseP44Job::dispatch (
$this->consignments,
$this->drop_id,
$this->limit-1
)->delay(now()->addMinutes(10));
}
$this->limit is a counter for the max execution iterations and is passed along from one job to the next