2012-03-08 84 views
5

我正在創建一個postgres多租戶環境。 因此,客戶端A有schema_1,B有schema_2等。我可以在飛行中創建重新排隊隊列

現在我不知道所有客戶端,一個租戶表。所有完全動態的:要添加一個新客戶,添加一個新租戶,並做一個耙客戶:db:migrate .. tada所有的表都在那裏,客戶有他們自己的小世界。 (未知卡斯特名單,但小,因此在耙註冊不成問題)

都好...
除了後臺作業。
我想爲每個客戶有不同的隊列。

http://blog.kabisa.nl/2010/03/16/dynamic-queue-assignment-for-resque-jobs/仍然使用硬編碼隊列。當你編寫代碼時,它可以選擇你知道的兩個,但它們仍然不是真正動態的。不是真的。

所以我的問題是。 我有一個字符串「tenant_1」,描述了我的客戶世界。
如何使用該字符串創建僅包含「他」的作業的隊列。
如何創建真正的動態隊列?

回答

4

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

這適用於我們。

+2

以及如何在完成後刪除這些隊列?或者,對於有1000個客戶隊列是不成問題的,其中50%是空閒的 – Luccas 2012-07-18 02:05:07

8

因爲有人像我一樣遇到這個問題,我在源代碼中找到了答案。

Resque version 1.x(stable)列出了這個/lib/resque.rb,看起來像是一個比直接訪問Resque中的Job模塊更好的方法。

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

這樣使用,完美地爲我工作。

Resque.enqueue_to(:my_queue, MyWorker, :my_argument) 
相關問題