/! \ Будьте осторожны, издатели публикуют в обмен, а не в очередь.
Мы хотим обрабатывать сообщения в порядке их поступления в очередь, но относительно источникаserviceId.
Если я правильно понимаю, вы хотите сбалансировать загрузку своих сообщений в соответствии с serviceId, а идентификаторы обслуживания не известны заранее.
Решение, которое я бы предложил здесь, - это прямой обмен ключами маршрутизации, такими как xxxxx.<serviceId>
.Затем вы можете привязать одну очередь по serviceId (то есть: одну очередь для службы A, одну для службы B, ...), причем каждый потребитель будет использовать все очереди.
Затем необходимо обработать подписку издателя.Я бы заставил издателя опубликовать сообщение "привет", причем это сообщение потребляется каждым потребителем, который, в свою очередь, связывает новую очередь для этой службы (используя xxxxx.<newServiceId>
), и, наконец, опубликовать ответ обратно (чтобы издатель могначать отправку сообщений).
Примечание: каждая очередь службы одинакова для всех потребителей, что приводит к рабочей конфигурации (см. это руководство )
Надеюсь, это поможет.