Laravel 7队列数据库作业不异步运行

Laravel 7队列数据库作业不异步运行,laravel,asynchronous,queue,jobs,Laravel,Asynchronous,Queue,Jobs,我不熟悉拉威尔,更不熟悉排队和工作。 我创建了一个作业和所需的数据库表,如Jobs和FailedJobs。 在我的.env中,我放了以下内容: QUEUE_CONNECTION=database 以下是作业类(SendEmailJob)的内容 <?php namespace App\Jobs; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundat

我不熟悉拉威尔,更不熟悉排队和工作。 我创建了一个作业和所需的数据库表,如Jobs和FailedJobs。 在我的.env中,我放了以下内容:

QUEUE_CONNECTION=database
以下是作业类(SendEmailJob)的内容

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use App\Mail\InfoletterMail;
use Illuminate\Support\Facades\Redis;

class SendEmailJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    protected $details;
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($details)
    {
        $this->details=$details;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        foreach ($this->details['users'] as $user){
            $email = new InfoletterMail($this->details);
            \Mail::to($user->email)->send($email);
            sleep(2);  
        }         
    }
}
我注意到,只要作业的任务没有完成,对dispatch()的调用就不会返回。 此外,我无法在数据库表中看到作业。 邮件以每2秒一封的速度正确发送 我的问题是如何让东西异步运行

 /**
     * Send the specified infoletter by email to all users
     * @param int id
     * 
     */
    public function send($id){
         $infoletter=Infoletter::find($id);
         $users=User::all();
         $details=[
            'title'=>$infoletter->title,
            'body' =>$infoletter->body,
            'users'=>$users,
         ];
        dispatch(new SendEmailJob($details));
        return 'job queued';
    }