#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. но мой вопрос заключался в том , какой подход был бы лучше ? первый или второй и почему предпочтение отдается одному другому?