Priority Queue Laravel Có thể bạn biết rồi

Priority Queue Laravel Có thể bạn biết rồi

Xin chào anh em! Hôm nay chúng ta sẽ cùng "đàm đạo" với nhau về một tính năng siêu độc đáo trong Laravel - "Priority Queue" hay còn gọi là "Hàng đợi ưu tiên". Thôi thì, hãy dừng mọi việc đang làm, cúi mình xuống và tập trung vào cái bài viết này nào, chắc chắn sẽ là một cuộc hành trình đầy thú vị.

Queue là gì?

Queue của Laravel gì gì nhỉ? Để đơn giản, hãy tưởng tượng một hàng đợi bình thường như hàng đợi mua vé xem phim, hoặc hàng đợi chờ vào thang máy ở tầng 1 của văn phòng công ty của bạn.

Ở trong Laravel, queue chính là một cơ chế giúp bạn giải quyết những công việc nặng nề, tốn thời gian mà không cần phải đợi tới khi hoàn thành. Thay vì ngồi đó, nhìn màn hình quay đều, Laravel sẽ tự động xếp chúng vào hàng đợi, một loạt các công việc đang chờ để được thực hiện.

Priority Queue là gì?

Nhưng đời là thế, có những công việc quan trọng hơn, cần được xử lý ngay lập tức. Và đó là lúc Priority Queue giải cứu chúng ta!

Đầu tiên, anh em cần chạy migration thêm bảng "jobs" vào database

php artisan queue:table
php artisan migrate

File Job của chúng ta sẽ không khác gì mấy với file job default sau khi chạy lệnh generate ra cả

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 Illuminate\Queue\Priority;
use Illuminate\Support\Facades\DB;

class MyJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    
    public function __construct()
    {
        // Khởi tạo job của bạn
    }

    public function handle()
    {
        // Xử lý công việc của bạn
    }
}

Để đưa job vào queue với mức ưu tiên đã thiết lập, chỉ cần thêm một tham số vào lời gọi dispatch hoặc dispatchNow của job.

use App\Jobs\MyJob;
use Illuminate\Support\Facades\Queue;

// Đưa job vào queue với mức ưu tiên LOW
MyJob::dispatch()->onQueue('low');

// Đưa job vào queue với mức ưu tiên NORMAL (mặc định nếu không set)
MyJob::dispatch();

// Đưa job vào queue với mức ưu tiên HIGH
MyJob::dispatch()->onQueue('high');
  1. Đối số thứ nhất các bạn có thể thể thấy là job.
  2. Đối số thứ 2 là id của job nếu không có mặc định hệ thống sẽ tự generate.
  3. Cuối cùng là mức độ ưu tiên của job.

Vậy là xong! Priority Queue trong Laravel giúp bạn quản lý ưu tiên của các công việc, đảm bảo những công việc quan trọng được xử lý ngay lập tức, giúp bạn tiết kiệm thời gian và tối ưu hóa hiệu suất. Hy vọng bài viết này sẽ giúp các bạn. Cảm ơn và hẹn gặp lại các bạn vào những bài viết sau!