As of Laravel 5.1, queueing closure jobs is no longer allowed. I get it, serializing / storing / deserializing closures is not a good practice. Security vulnerabilities are just one of the many good reasons to ditch them…
But just one more closure job won’t hurt, right? I can quit any time. Yep, any… t-time.
Add this job to your jobs folder (normally app/Jobs).
<?php
namespace App\Jobs;
use Illuminate\Contracts\Queue\ShouldQueue;
use SuperClosure\Serializer;
class ClosureJob extends Command implements ShouldQueue
{
    protected $closure;
    public function __construct(\Closure $closure)
    {
        $serializer = new Serializer();
        
        $serialized = $serializer->serialize($closure);
        $this->closure = \Crypt::encryptString($serialized);
    }
    public function handle()
    {
        $serializer = new Serializer();
        $closure = \Crypt::decryptString($this->closure);
        $closure = $serializer->unserialize($closure);
        $closure();
    }
}
To utilize your job, pass your closure as a parameter.
<?php
use App\Jobs\ClosureJob;
\Queue::push(new ClosureJob(function() {
    // do something...
}));