(Picking up from a Github Issue)
We use RabbitMQ's consistent hash exchange which is useful to shard routing keys from an exchange to multiple queues.
We use the queues to dish out work to workers. Ideally we would like to dynamically scale these workers but this presents issues.
To scale up, you need to add a new queue and binding. On it's own this is not a huge deal - except for that fact that a sharded key may now start going to a different queue.
So Worker A may have been managing Thing1, but now as we add the new queue Worker B may end up getting messages for Thing1. It's important that Worker A has finished all of it's Thing1 processing, before Worker B starts getting Thing1 messages.
Are they any approaches or plugins that can ease this issue?