要使用rabbitmq队列,我真的需要声明交换和队列吗?

要使用rabbitmq队列,我真的需要声明交换和队列吗?,rabbitmq,amqp,rabbitmq-exchange,Rabbitmq,Amqp,Rabbitmq Exchange,在我在网上找到的所有示例中,我都看到在使用消息之前声明了交换和队列。 宣布交换似乎很奇怪,因为我为什么要这么做?我正在使用一个队列,它可能绑定到多个交换(或者不绑定,可能只是有旧消息在等待) 而且,我想不出为什么要声明队列。这需要我知道队列的相关信息,而我不需要知道这些信息来使用它(比如自动删除和持久性) 当我在本地测试它时,我可以在不声明任何内容的情况下使用队列。它起作用了。所以我想知道,为什么我在网上看到的每一个例子都声明了交换和队列,即使它只是消耗了它 谢谢 “所有”您看到的示例都是独立的

在我在网上找到的所有示例中,我都看到在使用消息之前声明了交换和队列。 宣布交换似乎很奇怪,因为我为什么要这么做?我正在使用一个队列,它可能绑定到多个交换(或者不绑定,可能只是有旧消息在等待)

而且,我想不出为什么要声明队列。这需要我知道队列的相关信息,而我不需要知道这些信息来使用它(比如自动删除和持久性)

当我在本地测试它时,我可以在不声明任何内容的情况下使用队列。它起作用了。所以我想知道,为什么我在网上看到的每一个例子都声明了交换和队列,即使它只是消耗了它

谢谢

“所有”您看到的示例都是独立的。他们试图给你一个有效的例子。因为如果您没有设置所有组件,您的示例将失败

关于“为什么我要声明队列”。现实生活中的例子是,消费者希望使用与当前配置相关的消息。在这种情况下,它将创建一个独占队列(没有其他人可以连接到此队列),并将开始使用消息


回到你的答案。不,你不需要这样做。您可以预先创建交换、绑定和队列,然后将名称传递给代码

通常,您不需要在使用者中声明交换和排队。您必须在其他地方组装“交换/队列”拓扑。这就像数据库中的模式

但总有例外。 当您需要“专用”队列(exclusive=true)进行实时处理时,使用者必须(通过配置)了解源交换,并将自己的队列绑定到源交换

在另一种情况下,我可以想象发布者声明exchange,而使用者可以使用某种exchange命名约定(模式)来发现它