30天完成家庭任务平台:第二十八天

在简单介绍完驻列後,我要将原本的寄信流程改为使用驻列来寄信。

  1. 使用资料库做驻列
    env.档案中的QUEUE_CONNECTION改为:QUEUE_CONNECTION=database
    php artisan queue:table
    php artisan migrate

  2. 做出可以储存在驻列中的工作
    php artisan make:job SendEmail

  3. 把寄送email的过程改写到SendEmail的逻辑中

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

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        Mail::to($this->invitedMember->email)
            ->send(new InvitationInformed($this->invitedMember, $this->project));
    }
}
  1. 在每次邀请的过程中,将送email的工作储存到驻列中:SendEmail::dispatch($invitedMember,$project)
class ProjectInvitationController extends Controller
{
    public function store(InvitationRequest $request, Project $project)
    {

        $validated = $request->validated();
        $invitedMember = User::whereEmail($validated['email'])->first();
        SendEmail::dispatch($invitedMember,$project);
        $project->invite($invitedMember);
        return redirect(route('project.show', compact('project')));
    }
}
  1. 执行驻列中的工作
    php artisan queue:work

参考文章:

Your Guide to Laravel Email Queues


<<:  一Ryu大师: REST API

>>:  [Golang]宣告变数的方式

【没钱买ps,PyQt自己写】Day 8 – 我们的第二个 input 手段 – QLineEdit

看完这篇文章你会得到的成果图 前言 我们接下来的讨论,会基於读者已经先读过我 day5 文章 的架构...

[day-25] Python-例外处理!

甚麽是例外处理? 当Python在执行的时候,如果遇到无法处理的状况就会出现错误,导致整个程序卡住。...

[DAY 2] 网路应用架构演进

今天来简单说明网路架构的演进 在浏览器出现以前,使用的是C/S(Client-Server mode...

Swift 新手- 资讯安全讯息加密

社群软件的用户间交谈讯息是如何做到资讯安全保护? 关於端对端加密 隐私与安全对我们来说极度重要,因此...

30天学会Python: Day 26-一心多用

同步执行 目前写的程序都是一行接着一行一行执行,这种执行的方式叫做 同步执行 print("...