Đối với các dự án của tôi, tôi sẽ cảm thấy rất thoải mái với Collectiveidea / delay_job trong rails2 và 3. Tôi không biết beantalkd, nhưng tôi sẽ thử nó sớm :-). Tôi đã làm theo các đề xuất trong tài liệu resque. Tôi sẽ báo cáo.
Resque vs DelayedJob
Resque so với DelayedJob như thế nào và tại sao bạn lại chọn cái này hơn cái kia?
- Đặt lại hỗ trợ nhiều hàng đợi
- DelayedJob hỗ trợ các mức độ ưu tiên cụ thể hơn
- Nhân viên phục hồi có khả năng chống lại sự cố rò rỉ / phình to bộ nhớ
- DelayedJob worker cực kỳ đơn giản và dễ sửa đổi
- Yêu cầu lại yêu cầu Redis
- DelayedJob yêu cầu ActiveRecord
- Resque chỉ có thể đặt các đối tượng Ruby có thể JSON trên một hàng đợi làm đối số
- DelayedJob có thể đặt bất kỳ đối tượng Ruby nào vào hàng đợi của nó làm đối số
- Resque bao gồm một ứng dụng Sinatra để theo dõi những gì đang diễn ra
- DelayedJob có thể được truy vấn từ bên trong ứng dụng Rails của bạn nếu bạn muốn thêm giao diện
Nếu bạn đang phát triển Rails, bạn đã có một cơ sở dữ liệu và ActiveRecord. DelayedJob siêu dễ thiết lập và hoạt động tuyệt vời. GitHub đã sử dụng nó trong nhiều tháng để xử lý gần 200 triệu công việc.
Chọn Yêu cầu lại nếu:
- Bạn cần nhiều hàng đợi
- Bạn không quan tâm / không thích các ưu tiên số
- Bạn không cần phải duy trì mọi đối tượng Ruby
- Bạn có thể có hàng đợi rất lớn
- Bạn muốn xem chuyện gì đang xảy ra
- Bạn mong đợi rất nhiều thất bại / hỗn loạn
- Bạn có thể thiết lập Redis
- Bạn không thiếu RAM
Chọn DelayedJob nếu:
- Bạn thích các ưu tiên số
- Bạn không phải làm một lượng lớn công việc mỗi ngày
- Hàng đợi của bạn vẫn nhỏ và nhanh nhẹn
- Không có nhiều thất bại / hỗn loạn
- Bạn muốn dễ dàng ném bất cứ thứ gì vào hàng đợi
- Bạn không muốn thiết lập Redis
Chọn Beanstalkd nếu:
- Bạn thích các ưu tiên số
- Bạn muốn xếp hàng cực nhanh
- Bạn không muốn lãng phí RAM của mình
- Bạn muốn phục vụ số lượng công việc cao
- Bạn ổn với các đối tượng Ruby có thể JSON trên hàng đợi làm đối số
- Bạn cần nhiều hàng đợi
Không có cách nào gọi lại là DelayedJob "tốt hơn", vì vậy hãy đảm bảo rằng bạn chọn công cụ tốt nhất cho ứng dụng của mình.
Một so sánh tuyệt vời về tốc độ phụ trợ xếp hàng:
enqueue work
-------------------------------------------------
delayed job | 200 jobs/sec 120 jobs/sec
resque | 3800 jobs/sec 300 jobs/sec
rabbitmq | 2500 jobs/sec 1300 jobs/sec
beanstalk | 9000 jobs/sec 5200 jobs/sec
Chúc một ngày tốt lành!
P.S. Có một RailsCast về resque, Delayed Job (phiên bản sửa đổi) và Beanstakld. Hãy xem!
P.P.S. Choiche yêu thích của tôi bây giờ là Sidekiq (rất đơn giản, nhanh chóng và hiệu quả cho các công việc đơn giản), hãy xem trang này để so sánh.