Привет!
Мне нужно с помощью rabbit организовать следующую схему.
У меня есть N серверов ( в моем случаем сервер = customer ) логически разделенных по группам ( A / B / C / D / etc ).
Каждое сообщение должно быть доставлено всем серверам соответствующей группы.
A-message -> все A-customers, B -> B и так далее.
Я создал exchange с типом fanout именем exchange_A и queue_A, ожидая, что сообщения будут приходить каждому customer’у A-1, A-2 и A-3.
Результат оказался, не такой как я ожидал - сообщения приходили к каждому серверу группы по очереди.
Потому что fanout - это не про customer, а про queue. И судя по описанию протокола, именно так и должно быть.
Customer забрал сообщение, rabbit - удалил его из очереди, больше это сообщение никто не увидит.
Прям сейчас моя схема выглядит так: под каждого customer создается отдельная очередь, в которую приходят сообщения от широковещательной точки обмена. Но мне все еще нужно отправить сообщения не во все очереди, а по группам. В итоге родилась такая схема.
Вопрос вот в чем.
Нормальная ли практика создавать очередь под каждого кастомера? Или есть более правильное решения чем на последней картинке?
Спасибо!