Rabbitmq:exchange-> routingkey->队列命名结构

时间:2014-07-12 15:23:11

标签: c# python rabbitmq

我正在使用直接交换,因为我希望找一份工作给一个消费者。

有不同的消费群体会消费不同的工作。让我们说我的应用程序叫做“foo”。然后我有工作

  • bar1
  • bar2
  • BAR3 ....

将有一组独立的消费者处理“bar1”工作,然后是另一组消费者处理“bar2”等

我试图找出是否有任何特定命名/路由结构的好处,但没有发现任何指向某种方式

问题1) 我应该使用多个交换名称吗? 交换:

  • exc_bar1
  • exc_bar2
  • exc_bar3

或者单一交易是最好的 交换:

  • exc_foo

然后使用路由键发送到正确的消费者队列 RoutingKeys

  • rk_bar1
  • rk_bar2
  • rk_bar3

我无法找到任何方式,所以我认为这并不重要,但我想最好只是问我错过了什么,这很重要。


背景资讯

只是说它是相关的

生产者是一个使用rabbitpy库的python webapp 消费者是使用默认rabbitmq客户端库的c#应用程序

制作人可以设置  *交换名称  *路由密钥名称

消费者可以设定  *交换名称  *路由密钥名称  *队列名称

1 个答案:

答案 0 :(得分:0)

对于这种情况,我建议使用单个交换来包含单个应用程序的所有作业,然后使用队列来表示每个作业类型,然后可以有多个使用者(然后它将能够以循环方式处理来自该队列的消息)。

路由密钥可用于根据正在处理的作业来指导使用者

只有一次交换作为逻辑分组(即在应用级别)才有意义,并简化了 RabbitMQ 中的管理/管理/监控。如果您有新的工作类型,则只需创建一个新的队列&绑定和更改路由键,而不是必须创建一个新的交换,然后还必须创建一个新的队列&结合。

如果以后你有一个完全不同的应用程序,那么我会说它是时候为它创建一个新的交换然后遵循我上面提到的相同的通用模型(假设它的表现类似于高电平)。

我认为 RabbitMQ 网站上的Routing tutorial可能最适合您的情景,如果您正在寻找其他详细信息(以下链接适用于 Python 但他们也有 C#的一个。