Có thể và tôi luôn làm việc đó. Trong trường hợp của chúng ta, chúng ta cần nhiều công việc để xử lý ba loại công việc khác nhau nói queue_a, queue_b và queue_c. Hệ thống sẽ tạo các mục trong bảng delay_job và hàng đợi có tên phù hợp.
Bắt đầu nhiều công ăn việc làm trì hoãn như
RAILS_ENV=production script/delayed_job -i first --queue=queue_a start
RAILS_ENV=production script/delayed_job -i second --queue=queue_a start
RAILS_ENV=production script/delayed_job -i third --queue=queue_b start
RAILS_ENV=production script/delayed_job -i fourth --queue=queue_c start
Mỗi lệnh sẽ tạo ra một delayed_job, vì vậy sẽ có doanh nghiệp 4 công việc song song, hai trong số họ phục vụ queue_a và một trong mỗi cho queue_b và queue_c. Điều quan trọng ở đây là số nhận dạng được chuyển qua tùy chọn -i
chỉ định tên cá thể và chúng tôi có thể bắt đầu và dừng công việc theo yêu cầu.
Một tùy chọn khác là sử dụng nhóm công nhân.
RAILS_ENV=production script/delayed_job --pool=tracking --pool=mailers,tasks:2 --pool=*:2 start
Lệnh đó sẽ bắt đầu 1 công nhân cho hàng đợi theo dõi, 2 công nhân cho người gửi thư và hàng công việc và 2 công nhân cho bất kỳ công việc nào.
Không, nhiều công nhân hoạt động song song không phải tuần tự. Ngay cả khi các hàng đợi là tất cả trong một bảng, công nhân sẽ sử dụng truy vấn sql để chọn hàng đợi công việc mà nó được gán cho, thứ tự bởi 'run_at',' priority'. Do đó nhiều công nhân có thể làm việc trên các phần khác nhau trong bảng đó song song. – lulalala
Tôi quên câu trả lời, vì vậy tôi đã thêm vào những gì tôi sử dụng và chấp nhận nó. Tôi cũng upvoted khác ... – slotishtype