This is a follow up on Laravel - Running Jobs in Sequence
I decided to go with redis rate limit. Code is below
jobClass {
  protected $subscription;
  public function __construct(Subscription$subscription) {
        $this->subscription= $subscription;
    }
  public function handle() {
    Redis::funnel('mailingJob')->limit(1)->then(function () {
            // Job logic...
            (new Mailer($this->subscription))->send();
        }, function () {
            // Could not obtain lock...
            return $this->release(10);
        });
  }
}
And the controller code looks like.
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\Subscriptions;
class MailController extends Controller
{
    public function sendEmail() {
        Subscriptions::all()
        ->each(function($subscription) {
            SendMailJob::dispatch($subscription);
        });
    }
}
Now, when i run the queue, some of them works rest(around 90%) failed with the below error in horizon.
SendMailJob has been attempted too many times or run too long. The job may have previously timed out.
What am i missing? Please someone guide me to the right direction.
My goal is to run only one job of a type at one time.