Railsアプリがあり、さまざまなサービスがさまざまなエンジンで使用されています。さまざまなエンジンにさまざまなresque(およびさまざまなredisとさまざまなワーカー)を使用したいのですが、Railsでそれを行う方法は?
コードを共有していないため、アプリをどのように構成し、Redisとワーカーをどのように使用しているかわかりません。したがって、私はこの質問に答える間、多くのことを想定しなければなりません。
あなたの構造がこのようなものだとしましょう
root
engines
engine1
app
config
...
engine2
app
config
...
このようにresque設定を維持できます
ポート6380でローカルホストをredisで実行しているresque1config
#root/engines/engine1/config/resque.yml
development: localhost:6379 #redis1
test: localhost:6379
...
ポート6380でlocalhostをredisで実行するresque2config
#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という名前空間を使用でき、resqueの場合はエンジンごとに異なるキューのセットを定義できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加