2012-03-08 21 views
5

Tôi đang tạo môi trường nhiều người thuê nhà theo lịch. Vì vậy, khách hàng A có lược đồ_1, B có lược đồ_2 ect ..Tôi có thể tạo hàng đợi định kỳ lại khi đang bay

Bây giờ tôi không biết tất cả các khách hàng, vì vậy tôi có một công việc cào nhỏ đơn giản để tạo một lược đồ mới dựa trên dữ liệu một bảng thuê bao .. Tất cả hoàn toàn năng động: Để thêm một khách hàng mới, thêm một đối tượng thuê mới, và làm một người thuê nhà cào: db: migrate .. tada tất cả các bảng đều có và khách hàng có thế giới nhỏ bé của riêng họ. (Danh sách quyền sở hữu không xác định, nhưng quá nhỏ để đăng ký không phải là vấn đề)

Tất cả ...
Trừ các công việc trong nền.
Tôi muốn có một Hàng đợi khác nhau cho từng khách hàng.

http://blog.kabisa.nl/2010/03/16/dynamic-queue-assignment-for-resque-jobs/ vẫn sử dụng hàng đợi được mã hóa cứng. Nó có thể chọn giữa hai bạn biết về khi bạn viết mã, nhưng chúng vẫn không thực sự năng động .. Không thực sự.

Vì vậy, câu hỏi của tôi là. Tôi có chuỗi "tenant_1" mô tả thế giới khách hàng của mình.
Làm cách nào tôi có thể sử dụng chuỗi đó để tạo hàng đợi chỉ chứa công việc cho "anh ấy".
Làm cách nào để tạo hàng đợi động?

Trả lời

4

Resque :: Job.create ("client # {client_id}", MyWorker, 3);

Điều này phù hợp với chúng tôi.

+2

và cách bạn xóa các hàng đợi sau khi kết thúc? Hoặc không phải là vấn đề có 1000 hàng đợi của khách hàng và 50% trong số đó không hoạt động – Luccas

8

Khi bất kỳ ai gặp phải câu hỏi này giống như tôi đã làm, tôi đã tìm thấy câu trả lời bên trong nguồn.

Phiên bản Resque 1.x (ổn định) liệt kê điều này trong /lib/resque.rb và trông giống như một phương thức tốt hơn để gọi hơn là truy cập trực tiếp vào mô đun Công việc bên trong Resque.

# This method is considered part of the `stable` API. 
    def enqueue_to(queue, klass, *args) 

Sử dụng như vậy, hoạt động hoàn hảo với tôi.

Resque.enqueue_to(:my_queue, MyWorker, :my_argument) 
Các vấn đề liên quan