Queues send mail

B1:

  • Trước khi sử dụng Queues Laravel, chúng ta cần tạo ra một jobs bảng CSDL để lưu trữ tất cả các hàng đợi: php artisan queue:table
  • Để migrate sẽ chạy lệnh: php artisan migrate
  • Kiểm tra trong database có thêm 1 bảng jobs
  • Để thay đổi xử lý queue thành DB, mở file .env  và thay đổi QUEUE_DRIVE=database

B2:

  • Cần tạo một mail để gửi message đơn giản: php artisan make:mail HelloMail

B3: Tạo template mail

  • Tạo 1 file hello.blade.php trong thư mục mail với nội dung:

B4:

  • Tạo 1 queue job: php artisan make:job SendWelcomeEmail
  • Khi bạn chạy xon lệnh trên, 1 folder mới với tên là Jobs sẽ được tạo ra trong folder app và có 1 file class là SendWelcomeEmail.
  • Đầu tiên chúng ta cần thêm các không gian tên Mail và SendWelcomeEmail trong đó.
  • Tiếp theo chúng ta cần thiết lập quy trình gửi email bên trong hàm handle()

B5:

Setup Route:

B6:

  • Tạo Controller:php artisan make:controller JobController và edit code:
  • Truy cập /send, một jobs mới sẽ được thêm vào bảng jobs

B7:

  • Chạy Queue Worker: php artisan queue:work . Khi đó job của bạn sẽ được xử lý, bạn sẽ có thể thấy trạng thái sẽ thay đổi từ xử lý sang xử lý với tên công việc.

Delay Dispatch: Nếu bạn muốn trì hoãn một job, có nghĩa là muốn gửi email sau một thời gian nhất định, bạn có thể sử dụng hàm delay() này bằng cách chuyển thời gian bạn muốn trì hoãn như dưới đây:

Lúc này khi bạn truy cập /send sau 1 phút khi truy cập mail sẽ được gửi.