Trabalhar com duas instâncias de redis separadas com sidekiq?
Boa tarde,
Eu tenho dois aplicativos separados, mas relacionados. Eles devem ter suas próprias filas de fundo(leia: processos separados do Sidekiq & Redis). No entanto, gostaria de ocasionalmente ser capaz de empurrar trabalhos paraapp2
fila doapp1
.
De uma perspectiva simples de fila / envio, seria fácil fazer isso seapp1
não tinha uma pilha existente do 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!'])
No entanto, dado que eu já teria chamado umSidekiq.configure_client
eSidekiq.configure_server
deapp1
provavelmente há um passo entre aqui onde algo precisa acontecer.
Obviamente eu poderia simplesmente pegar o código de serialização e normalização diretamente de dentro do Sidekiq e empurrar manualmenteapp2
é a fila do redis, mas isso parece uma solução frágil. Eu gostaria de poder usar oClient.push
funcionalidade.
Eu suponho que minha solução ideal seria algo como:
SidekiqTWO.configure_client { remote connection..... }
SidekiqTWO::Client.push(job....)
Ou até mesmo:
$redis_remote = remote_connection.....
Sidekiq::Client.push(job, $redis_remote)
Obviamente, um pouco facetious, mas esse é o meu caso de uso ideal.
Obrigado!