Итак, мы решили пойти с RabbitMQ в качестве шины сообщений/событий в нашей миграции на архитектуру микросервисов, но мы не смогли найти однозначного ответа на вопрос о том, как лучше всего поставить наши очереди, у нас есть два варианта: пойдите с:
-
Один из основных обменов, который будет обмена Fanout, который, в свою очередь, будет отправлять сообщения в основную очередь для ведения журнала и других целей и другого подзаголовка, который будет обмениваться темами и направлять сообщения в каждую желаемую очередь используя ключ маршрутизации сообщения. Мы ожидаем, что количество очередей за суб-биржей будет каким-то большим количеством. Это можно объяснить этим графиком:
-
Один основной обмен, который будет обменом Темами, с еще одной основной очередью, привязанной к этому обмену, с использованием ключа маршрутизации "#". Этот основной обмен также будет обрабатывать основную маршрутизацию на другие суб-обмены, поэтому ключи маршрутизации могут быть "соглашениями. #", "Присваиваниями. #", "Сообщениями. #", Которые затем используются для привязки нескольких подсегментов к темам, каждый из которых будет обрабатывать вспомогательную маршрутизацию, поэтому один дополнительный обмен может обрабатывать все "назначения", а очереди, связанные с этим обменом, могут быть связаны с помощью маршрутизации ключей, таких как "assignments.accepted", "assignments.deleted"... В этом сценарии мы чувствуем, что огромное количество очередей будет меньше за обмен, они будут как-то распределены между биржами. Итак, какой из этих сценариев мог бы быть лучшим подходом? Быстрее на RabbitMQ, меньше накладных расходов.
Принимая во внимание, что все очереди, обмены и привязки будут выполняться "на лету" из службы, которая будет либо опубликована, либо подписана.