Работать с двумя отдельными экземплярами Redis с Sidekiq?
Добрый день,
У меня есть два отдельных, но связанных приложений. У них обоих должны быть свои собственные фоновые очереди(читай: отдельные процессы Sidekiq и Redis), Тем не менее, я хотел бы иногда иметь возможность продвигать рабочие места наapp2
Очередь отapp1
.
С точки зрения простой очереди / push это было бы легко сделать, если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!'])
Однако, учитывая, что я бы уже назвалSidekiq.configure_client
а такжеSidekiq.configure_server
из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)
Очевидно, немного шутливо, но это мой идеальный вариант использования.
Спасибо!