2013-03-06 2 views
1

Таким образом, мы будем иметь тему обмена, который выглядит как-тоКак сделать тему обмены расширяемая

{class}.{genus} 

Таким образом, мы имеем некоторые потребители, которые связываются с темой

mammal.* 

(или bird.* и т.д.)

Предположим позже, мы хотим включить информацию о видах, чтобы обмен темой теперь выглядит так:

{class}.{genus}.{species} 

Теперь старые потребители ломаются :(

Однако они могли бы связаны, как

mammal.*.# 

И был в состоянии слушать то, что в будущем информация будет добавлена. Тем не менее, это то, что моя команда придумала сама по себе, которая позволяет мне спросить:

  • Это хорошая практика?
  • Есть ли компромиссы к этому, о которых я должен знать?
  • Есть ли альтернативный способ, чтобы производитель мог добавлять информацию, не нарушая существующих потребителей, без публикации на нескольких биржах?

ответ

0

Как правило, если у вас есть максимальный контроль нужно на доставке очереди и хотите сделать логику в кролике, то вам следует рассмотреть обмены заголовка.

Обычно, когда мы кодируем публикацию, мы точно знаем, в какую очередь она должна идти, поэтому, если вы хотите использовать ключ маршрутизации или логическое значение для этого, это может не иметь большого значения в зависимости от вашего приложения.

Это вызывает еще одно соображение, которое необходимо учитывать, будь то логика маршрутизации у кролика. Кто-то предпочитает просто использовать простые ключи маршрутизации и прямые или тематические обмены, ориентированные на гибких потребителей. Его трудно будет догадаться о том, что лучше всего подходит для вашего приложения.

Имейте в виду, что ваши потребители будут часто подписываться, часто статически, в очереди (очередях), которые передает обмен. Также mammal.# такая же, как mammal.*.# (см: ref)

+1

RabbitMQ в действии де-факто государств, заголовочные биржи являются устаревшими и тема должна быть использована - Согласны ли вы с этим или есть какие-либо трудности с заголовком я должен быть в курсе? – djechlin

Смежные вопросы