未创建 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" 队列。据我了解,发布方不需要队列绑定。
提前致谢。
为什么要自动创建队列?由于您没有在任何地方绑定队列,因此消息基本上被丢弃(因为它无处可去)。您的消费者或生产者必须声明队列并将其绑定到交换器(取决于对您有意义的内容)。
我正在尝试通过直接交换发送消息。我没有像官方页面教程中提到的那样声明队列。下面是我的代码:
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" 队列。据我了解,发布方不需要队列绑定。 提前致谢。
为什么要自动创建队列?由于您没有在任何地方绑定队列,因此消息基本上被丢弃(因为它无处可去)。您的消费者或生产者必须声明队列并将其绑定到交换器(取决于对您有意义的内容)。