Our system has regional RabbitMQ servers in each of our hosted data centers (where we run our website/service/dashboard), and then a central RabbitMQ cluster (where we do our backend heavy lifting). A couple queues currently exist in the regional deployments, each with a shovel defined to move the messages over to our central cluster for processing. All of the actual message consumption happens in the central region. Each of these queues that are currently setup with shovels, hold a single message type, and have a matching queue on the central cluster. We are planning on adding many more message types, which worries me when it comes to setup/runtime overhead for many low volume queues/shovels.
Basically I want to minimize the overhead of adding new message types to the regional deployments, as this is something I see wanting to do frequently as we add new features to our dashboard, etc. I was thinking of perhaps queuing multiple message types into a single queue (i know this isn't the best thing to do in general, for prioritization of messages, etc), and then having them shovel into an exchange on the backend cluster, where they could be fanned out appropriately. Is there an established pattern for this type of work (these aren't high throughput messages, more like system configuration/account changes, etc), or should I really just stick with independent queues for each type of operation? I feel like with the low volume of the messages, putting them all in one queue in each region won't be an issue (at least for some time).
If you have ideas/suggestions please share. :)
Thanks,
Jesse