2012-03-08 51 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) 
相关问题