<span style>Hello,</span><div style><br></div><div style>Is there any way I can move queues from one RabbitMQ node to another?</div><div style><br></div><div style>My usage scenario is moving a live RabbitMQ instance from one server to another as transparently as possible. Something like:</div>
<div style>- start another RabbitMQ instance on the target server</div><div style>- cluster together the source and target RabbitMQ instances</div><div style>- close all existing connections</div><div style>- flip IPs (target's IP takes the source's IP)</div>
<div style>- start moving all the queues from source to target. During this time clients should be able to consume from the target queues.</div><div style>- when the move process has finished, terminate the source RabbitMQ instance</div>
<div style><br></div><div style>Reading the documentation I see the following potential options - which don't seem completely satisfactory:</div><div style>- The shovel plugin. I would need to redeclare all queues on the target RabbitMQ and then shovel messages over. The only problem that I see is that it's not completely transparent to clients - a queue may appear empty or may report less messages if not all messages have been shoveled over when a client starts using it.</div>
<div style>- Mirrored queues. But I don't think you can make a queue mirrored *after* it has been created. Can you?</div><div style>- Shared network disk. But this requires a broker restart - and thus implies loosing all non-durable queues and non-persistent messages.</div>
<div style><br></div><div style>Is there any other way?</div><div style><br></div><div style>Thanks,</div><div style>Ionel.</div>