Один обмен с несколькими ключами маршрутизации или несколькими обменами, эффективный в RabbitMQ - PullRequest
0 голосов
/ 13 марта 2019

Я использую RabbitMQ в своем проекте, и мне было интересно, стоит ли мне использовать один обмен с несколькими ключами маршрутизации или использовать несколько обменов? Что будет более эффективным?

Пример, если я использую одиночный обмен E с ключами маршрутизации A, B, C и потребитель подключается к этому обмену E и получает данные с использованием ключей маршрутизации A, B, C. Другой вариант - отправить его на биржу A, биржу B, биржу C без ключей маршрутизации, и потребитель сможет подключиться к каждой бирже для получения необходимых данных.

пример с библиотекой python pika (которую я сейчас использую):

channel.basic_publish(exchange='E',
                      routing_key='A',
                      body=data)  
channel.basic_publish(exchange='E',
                      routing_key='B',
                      body=data)  
channel.basic_publish(exchange='E',
                      routing_key='C',
                      body=data)

OR

channel.basic_publish(exchange='A',
                      routing_key='',
                      body=data)  
channel.basic_publish(exchange='B',
                      routing_key='',
                      body=data)  
channel.basic_publish(exchange='C',
                      routing_key='',
                      body=data)

1 Ответ

0 голосов
/ 13 марта 2019

Вы можете пойти на свой первый подход.Объявите ваш exchange как прямой обмен.В случае Direct Exchange имя queue принимает за routing key.exchange способен связывать себя с несколькими очередями.Кроме того, задача обмена состоит в том, чтобы направить сообщение в очередь.Наличие нескольких связанных очередей не приведет к снижению эффективности RabbitMQ.

...