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

pol*_*olo 6 amqp rabbitmq rabbitmq-exchange

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

另外,我想不出为什么要声明一个队列。这将要求我了解有关队列的信息,而我不需要知道这些信息来使用它(例如 auto_delete 和持久性)。

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

谢谢!!!

Vor*_*Vor 5

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

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

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


小智 5

一般来说,你不需要在消费者中声明交换和队列。您必须在其他地方组装“交换/队列”拓扑。这就像数据库中的模式。

\n\n

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

\n\n

在其他情况下,我可以想象发布者声明交换并且消费者可以使用某种约定(模式)进行交换命名来发现它的情况。

\n