Публикация сообщений в двух очередях RabbitMQ вместо одной (с использованием py-amqp)
У меня странная проблема с использованием py-amqp и модуля Flopsy. Я написал издателя, который отправляет сообщения на сервер RabbitMQ, и я хотел иметь возможность отправить его в указанную очередь. В модуле Flopsy это невозможно, поэтому я настроил его, добавив параметр и строку для объявления очереди в методе _init__ объекта Publisher.
def __init__(self, routing_key=DEFAULT_ROUTING_KEY,
exchange=DEFAULT_EXCHANGE, connection=None,
delivery_mode=DEFAULT_DELIVERY_MODE, queue=DEFAULT_QUEUE):
self.connection = connection or Connection()
self.channel = self.connection.connection.channel()
self.channel.queue_declare(queue) # ADDED TO SET UP QUEUE
self.exchange = exchange
self.routing_key = routing_key
self.delivery_mode = delivery_mode
Объект канала является частью библиотеки py-amqplib
У меня проблема в том, что, даже если он отправляет сообщения в указанную очередь, он также отправляет сообщения в очередь по умолчанию. Поскольку в этой системе мы ожидаем отправки довольно большого количества сообщений, мы не хотим подчеркивать, что система создает бесполезные дубликаты... Я попытался отладить код и зайти в библиотеку py-amqplib, но я не в состоянии выяснить какую-либо ошибку или недостающий шаг. Кроме того, я не могу найти какую-либо форму документации py-amqplib вне кода.
Любые идеи о том, почему это происходит и как это исправить?
1 ответ
Хорошо, я думаю, что понял. если у кого-то еще нет лучшей идеи. Я проверил этот учебник по AMQP. Я предполагал, что издатель должен знать очередь, но это не так, вам нужно отправить сообщение на обмен, и потребитель объявит, что очередь связана с обменом. Это позволяет разные варианты отправки и получения, как вы можете видеть в учебнике.
Итак, я включил информацию об обмене как по издателю, так и по потребителю, не используя призыв к queue_declare
и, кажется, работает просто отлично.