Довольно плохо знаком с RabbitMQ, и мы все еще находимся на стадии исследования, чтобы посмотреть, подходит ли оно для наших случаев использования -
Мы с готовностью пришли к выводу, что наша желаемая топология будет иметь насразвертывание нескольких тематических обменов, а затем фильтрация оттуда к определенным очередям.Например, допустим, у нас есть пользователь и обмен загрузками, где очередь пользователя может получать сообщения, где тема «new-registration» или «friend-request», а обмен загрузками может получать сообщения типа «video-upload» или«картинка загрузки».
Создание очередей, их маршрутизация в соответствующую очередь, а затем создание слушателей для обработки сообщений для различных очередей было довольно простым делом.
Что мне неясно, однако, возможно ли сделать разветвление в обмене темами?
Т.е. я назвал очереди, которые связаны с моим обменом темами, но я хотел бы иметь возможность просто бросать тонны экземпляров моих слушателей в эти очереди, чтобы предотвратить отдельные точки отказа.Но, насколько мне известно, RabbitMQ обрабатывает этих слушателей прямым циклическим образом - например, каждое N-е сообщение всегда направляется одному и тому же N-му слушателю, а не отправляет сообщения первому доступному потребителю.Это в целом приемлемо для нас, но, учитывая ожидаемую нами нагрузку, мы бы хотели избежать возможности возникновения горячих точек в нашей потребительской ферме.
Итак, есть ли какой-то путь, либо в конфигурации очереди, либо в конфигурации обменаили в потребительском коде, где мы можем указать нашим слушателям на очередь тем, но обработать слушателей в режиме разветвления?