如何在heroku上的两个不同的应用程序之间共享工作者?

Sac*_*ngh 7 ruby ruby-on-rails heroku worker sidekiq

我有两个单独的应用程序在Heroku上运行,并指向同一个数据库,第一个负责user interface和第二个的admin interface,我使用sidekiqredis后台作业处理,我增加了一个工人,我能够通过设置共享"的Redis服务器"环境变量指向相同的Redis提供Addon,现在我也想分享worker,因为添加额外的worker会花费两倍.

请建议,这是否可能?

Mik*_*ham 12

如果两个应用程序使用相同的Redis URL和相同的命名空间,则可以使用相同的Redis配置启动一个工作程序,并且它们将由两者共享.

请注意,您的Sidekiq进程将启动一个应用程序或另一个应用程序.您的Workers的代码必须在该应用程序中.另一个应用程序将无法引用代码,但可以使用以下方式推送作业:

Sidekiq::Client.push('class' => 'SomeWorker', 'args' => [1,2,3])
Run Code Online (Sandbox Code Playgroud)

请注意,'class'是一个String,因此SomeWorker实际上可以在另一个应用程序中定义.