¿Trabajar con dos instancias redis separadas con sidekiq?
Buenas tardes,
Tengo dos aplicaciones separadas, pero relacionadas. Ambos deberían tener sus propias colas de fondo.(lea: procesos Sidekiq & Redis separados). Sin embargo, me gustaría poder ocasionalmente impulsar trabajos enapp2
la cola deapp1
.
Desde una perspectiva de cola / inserción simple, sería fácil hacer esto siapp1
no tenía una pila Sidekiq / Redis existente:
# 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!'])
Sin embargo, dado que ya habría llamado aSidekiq.configure_client
ySidekiq.configure_server
desdeapp1
Probablemente haya un paso entre aquí donde algo debe suceder.
Obviamente, podría tomar el código de serialización y normalización directamente desde el interior de Sidekiq y empujar manualmente haciaapp2
La cola de Redis, pero eso parece una solución frágil. Me gustaría poder usar elClient.push
funcionalidad
Supongo que mi solución ideal sería algo como:
SidekiqTWO.configure_client { remote connection..... }
SidekiqTWO::Client.push(job....)
O incluso:
$redis_remote = remote_connection.....
Sidekiq::Client.push(job, $redis_remote)
Obviamente un poco gracioso, pero ese es mi caso de uso ideal.
¡Gracias!