Rabbitmq 如何在Pika consumer中指定交换?

Rabbitmq 如何在Pika consumer中指定交换?,rabbitmq,pika,Rabbitmq,Pika,标题中的所有内容:在rabbitmq文档中的以下方法中,我们看到publish将exchange作为参数,但使用者不这样做 此外,当我在使用时,consumer中的队列与publish中的路由_key相同?我认为路由密钥就像一个标签,因此订阅者可以订阅各种标签的正则表达式 要使用的代码: import pika def callback(ch, method, properties, body): print " [x] Received %r" % (body,) connection

标题中的所有内容:在rabbitmq文档中的以下方法中,我们看到publish将exchange作为参数,但使用者不这样做

此外,当我在使用时,consumer中的
队列
与publish中的
路由_key
相同?我认为路由密钥就像一个标签,因此订阅者可以订阅各种标签的正则表达式

要使用的代码:

import pika
def callback(ch, method, properties, body):
   print " [x] Received %r" % (body,)

connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_consume(callback, queue='hello', no_ack=True)
channel.start_consuming()
要发布的代码:

import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='', routing_key='hello', body='Hello World!')
connection.close()

您对RabbitMQ中的工作方式感到困惑。在RabbitMQ中,您总是将消息发布到
交换机
。交换与将消息路由到
队列
(或一组队列)的逻辑接收器没有区别

根据
交换的类型,此路由的选择有所不同。有不同的类型:直接、扇出、主题和标题。将
交换
链接到
队列
的方法是使用
绑定
。绑定由路由键或某些头定义,它将消息从特定的交换路由到特定的队列

因此,总而言之,您将消息发布到
Exchange
。您使用
队列中的消息。使用
绑定
将消息从
交换
路由到
队列
。也就是说,没有办法说消费者从
交易所消费

在您的特定情况下,您正在邮件中使用路由键“hello”。这意味着您需要从名为“”的
交换
到名为“hello”的
队列的
绑定
,并使用与邮件相同的路由键(即“hello”)。我建议你换个名字,换个更有用的名字,看看发生了什么

希望这有帮助