Для большинства людей лучше всего использовать обмен темами для всего, пока вы полностью не поймете, как работает AMQP. Вы можете получить разветвление и прямое поведение, просто выбрав правильный ключ привязки для очереди. Например, если вы используете «#» для ключа привязки, то эта очередь ведет себя так, как если бы она была подключена к прямому обмену. И если вы связываете две или более очередей с одними и теми же ключами маршрутизации, то эти очереди функционируют так же, как если бы это был разветвленный обмен.
Ожидается круговое поведение. Обе задачи подписаны на одну и ту же очередь. Тот факт, что ключи привязки разные, просто все смущает. Вероятно, кто связывает в последнюю очередь, установит ключ привязки для каждого пользователя очереди. Лучше не делать этого. Я создаю систему, в которой несколько очередей имеют от 4 до 15 экземпляров одного и того же рабочего кода, извлекают сообщения из одной и той же очереди и затем собирают данные из веб-служб. У меня даже были рабочие, работающие на разных процессорах, хотя в итоге это не было необходимо для производительности.
Я не уверен, почему вы используете подстановочные знаки в связывающих ключах. Если у вас есть 8 потребителей с именами от A до H, и каждый из них выполняет свою работу, то почему бы не опубликовать сообщения с ключами маршрутизации work.A через work.H, а затем использовать те же ключи привязки work.A через work.H. Таким образом, если у вас есть несколько экземпляров работника B, все они привязываются к работнику B. и сообщение не доставляется дважды.
Кроме того, если вы не подтвердите сообщение после его обработки, то в конечном итоге оно вернется в очередь и будет доставлено снова. Надеюсь, вы получили ответ после успешной обработки сообщения. Менеджер задач не требуется, просто лучше понять все ручки AMQP.