未创建 RabbitMQ 直接交换队列

RabbitMQ direct exchange queue not created

我正在尝试通过直接交换发送消息。我没有像官方页面教程中提到的那样声明队列。下面是我的代码:

import sys
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))  # Connect to AMQP

def setup():
        channel = connection.channel()
        channel.exchange_declare(exchange='direct_logs', type='direct')
        return channel

def log_emitter(message, severity):
        channel = setup()
        channel.basic_publish(exchange='direct_logs',
                      routing_key=severity,
                      body=message)

def logger():
        severity = sys.argv[1] if len(sys.argv) > 2 else 'info'
        print severity
        exit = 'N'
        message = ' '.join(sys.argv[2:]) or "Hello World!"
        log_emitter(message, severity)
        print(" [x] Sent %r:%r" % (severity, message))
    connection.close()

logger()

我正在执行

python direct_log_publisher.py info "Info testing"

它正在创建 direct_logs 交换,但我看不到在管理控制台中创建了任何 "info" 队列。据我了解,发布方不需要队列绑定。 提前致谢。

为什么要自动创建队列?由于您没有在任何地方绑定队列,因此消息基本上被丢弃(因为它无处可去)。您的消费者或生产者必须声明队列并将其绑定到交换器(取决于对您有意义的内容)。