在每个频道上声明所有队列和交换是不好的形式?

时间:2014-03-19 20:16:45

标签: rabbitmq message-queue messaging

我开始使用RabbitMQ,我有一个架构困境。我打算构建消息使用者类,声明他们消费和写入的队列和交换。为了避免队列配置选项和多个使用者和生产者之间的名称不匹配,我创建了一个“存储库”类,其中包含队列名称和选项。

然后它让我感到震惊......为什么没有一个全局configChannel(Channel)静态方法来声明所有队列,而不是让每个消费者类都包含它使用的队列列表。和我创建的每个频道的交流?这样,我就不必担心它们的声明顺序了。有缺点吗?如果没有,为什么不在文档中推荐这种方法(据我所知)?

修改

我在这里找到了更多信息:

http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2013-June/027880.html

  

我认为期望生产者和消费者应该宣布他们直接互动的事物。“

https://groups.google.com/forum/#!topic/rabbitmq-discuss/Jp49IRe693o

  

通常,生产者和消费者都会宣布交换   出于兴趣。但只有消费者会声明并绑定队列,   因为他们知道他们希望收到哪些信息。

如果我理解正确,当生产者只声明它发布的交换时,为了避免消息变黑(队列尚未声明),需要进行一些同步以确保消费者首先被启动并声明其(他们的)队列。为什么要为潜在的麻烦而烦恼,不要为每个生产者和消费者预先排队?我想有些应用程序需要动态创建队列,这是另一个故事。我的论点与 static 或永久应用程序消息队列存在时有关。

1 个答案:

答案 0 :(得分:0)

事实证明,通过脚本将队列,交换和绑定声明为管理步骤更容易。