Cách supervisor mở các queue để chạy

Tram Ho

Giới thiệu

Đã bao giờ bạn tự hỏi, queue laravel thật sự hoạt động như thế nào chưa, vừa rồi có dịp tìm hiểu nên mình cũng muốn giới thiệu chi tiết tới mọi người luôn

Nhóm để chạy queue:work

WorkCommand

Là class sẽ đăng kí comman chạy cho laravel

Worker

1 đơn vị xử lí, nơi tạo vòng lặp xử lí, bóc tách job ra khỏi queue để xử lí (có thể hiểu giống như 1 process của CPU)

  • Trong worker tạo một vòng lặp liên tục
  • Nếu queue bị pause thì stop job lại
  • Lấy job tiếp theo từ database job (có thể là database, redis, …)
  • Nếu có job sẽ tiến hành xử lí
  • Xử lí xong job, sleep 1 khoảng thời gian, rồi tiến hành chạy lại vòng lặp lấy job ra chạy tiếp

Queue

Nơi tạo load define job, payload, event, setting connection để lưu trữ queue

Job

Đơn vị nhỏ nhất chứa công việc cần được xử lí, sẽ được đẩy vào queue và xử lí dần dần

Nhóm của queue:listen

Thường được dùng để chạy command cho việc phát triển ở local, giống queue:work phía trên nhưng command này giúp lắng nghe thay đổi của source code để reload lại queue để apply code mới của chúng ta mỗi lần chúng ta edit

ListenCommand

Nơi define command cho queue:listen

class Listener

Nơi run process cho command queue:listen, như ta thấy cũng giống trên kia, nó chạy bằng 1 vòng while (true)

Cách supervisor mở các queue để chạy

Dùng supervisor, ta có thể mở số lượng woker tuỳ ý, phù hợp với yêu cầu business và cấu hình server, thông thường đối với 1 server tầm trung mình nghĩ mở tầm 8 => 10 woker là đủ

Mình đã mô tả sơ qua cách vận hành của job và worker trong laravel rồi nhé, hy vọng sẽ giúp ích được cho các bạn

Chia sẻ bài viết ngay