Может ли одно железнодорожное приложение использовать несколько Resque (в разных движках) и несколько экземпляров redis? - PullRequest
1 голос
/ 13 октября 2019

У меня есть приложение rails, где мои разные сервисы находятся на разных движках. Я хочу использовать разные resque (и разные redis и разные рабочие) для моих разных движков. Как это сделать в rails?

Ответы [ 2 ]

0 голосов
/ 13 октября 2019

Поскольку вы не поделились ни одним кодом, я не уверен, как вы структурировали свое приложение и как вы используете Redis и рабочих. Следовательно, мне придется принять во внимание много вещей при ответе на этот вопрос.

Допустим, ваша структура выглядит следующим образом

root
  engines
    engine1
      app
      config
      ...
    engine2
      app
      config
      ...

Вы можете сохранить конфигурацию resque следующим образом

resque1 configс повторным запуском локального хоста через порт 6380

#root/engines/engine1/config/resque.yml 
development: localhost:6379 #redis1
test: localhost:6379
...

resque2 config с повторным запуском локального хоста через порт 6380

#root/engines/engine2/config/resque.yml 
development: localhost:6380 
test: localhost:6380
...

спасатель1 инициализатор

#root/engines/engine1/config/initializers/resque.yml
rails_root = File.dirname(__FILE__) + '/../..'
rails_env = ENV['RAILS_ENV'] || 'development'
config_file = rails_root + '/engines/engine1/config/resque.yml'

resque_config = YAML::load(ERB.new(IO.read(config_file)).result)
Resque.redis = resque_config[rails_env]

инициатор спасения2

#root/engines/engine2/config/initializers/resque.yml
rails_root = File.dirname(__FILE__) + '/../..'
rails_env = ENV['RAILS_ENV'] || 'development'
config_file = rails_root + '/engines/engine2/config/resque.yml'

resque_config = YAML::load(ERB.new(IO.read(config_file)).result)
Resque.redis = resque_config[rails_env]

Вы можете начать таких работников, как это

RAILS_ENV=production resque-web rails_root/engines/engine1/config/initializers/resque.rb
RAILS_ENV=production resque-web rails_root/engines/engine2/config/initializers/resque.rb

Кроме того, если вы хотите использовать отдельный экземпляр redis и resque , то для redis вы можете указать пространство именhttps://github.com/resque/redis-namespace и для восстановления вы можете определить различные наборы очередей для каждого механизма.

0 голосов
/ 13 октября 2019

Вы можете использовать тот же Redis с different namesapces для каждого двигателя. Или, если память о Redis принадлежит вам, вы можете попробовать использовать gem пула соединений Redis .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...