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

#rabbitmq #pika #rabbitmq-exchange

#rabbitmq #pika #rabbitmq-обмен

Вопрос:

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

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

пример с библиотекой 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. Вы хотите прямое исключение с привязкой к очередям A, B, C?

2. Почему бы не запустить тесты и не убедиться самим?

Ответ №1:

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

Комментарии:

1. но мой вопрос заключался в том , какой подход был бы лучше ? первый или второй и почему предпочтение отдается одному другому?