こんにちは、
私は2つの別々の、しかし関連するアプリを持っています。両方とも独自のバックグラウンドキューを持っている必要があります(個別のSidekiqおよびRedisプロセスを参照)。app2
ただし、ときどきからのキューにジョブをプッシュできるようにしたいと思いますapp1
。
単純なキュー/プッシュの観点から、app1
既存のSidekiq/Redisスタックがない場合はこれを簡単に行うことができます。
# In a process, far far away
# Configure client
Sidekiq.configure_client do |config|
config.redis = { :url => 'redis://redis.example.com:7372/12', :namespace => 'mynamespace' }
end
# Push jobs without class definition
Sidekiq::Client.push('class' => 'Example::Workers::Trace', 'args' => ['hello!'])
# Push jobs overriding default's
Sidekiq::Client.push('queue' => 'example', 'retry' => 3, 'class' => 'Example::Workers::Trace', 'args' => ['hello!'])
しかし、私がすでにaSidekiq.configure_client
とSidekiq.configure_server
fromを呼んでいたことを考えるとapp1
、おそらくここの間に何かが起こる必要があるステップがあります。
明らかに、Sidekiqの内部からシリアル化と正規化のコードを直接取得し、手動でapp2
のredisキューにプッシュすることもできますが、それは脆弱な解決策のようです。機能を利用できるようにしたいと思いClient.push
ます。
私の理想的な解決策は次のようなものだと思います。
SidekiqTWO.configure_client { remote connection..... }
SidekiqTWO::Client.push(job....)
あるいは:
$redis_remote = remote_connection.....
Sidekiq::Client.push(job, $redis_remote)
明らかに少し面白味がありますが、それが私の理想的なユースケースです。
ありがとう!