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

本文关键字:结构 队列 exchange- routingkey- Rabbitmq | 更新日期: 2023-09-27 18:12:41

我使用直接交换,因为我想让一个工作发给一个消费者。

有不同的消费者群体,他们会消费不同的工作。假设我的应用程序名为"foo"。然后我就有工作了

  • bar1
  • bar2
  • bar3…

将有一组独立的消费者处理"bar1"作业,然后另一组消费者处理"bar2"等

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

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

  • exc_bar1
  • exc_bar2
  • exc_bar3

还是单次交换最好交换:

  • exc_foo

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

  • rk_bar1
  • rk_bar2
  • rk_bar3

我一直没能找到任何东西,所以我认为这并不重要,但我想最好问一下,以防我错过了什么,这确实很重要。


<

背景信息/strong>

如果是相关的

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

生产者可以设置*交易所名称*路由密钥名称

消费者可以设置*交易所名称*路由密钥名称*队列名称

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

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

然后可以使用路由键来指示消费者正在处理哪个作业

只有一个交换既可以作为一个逻辑分组(即在应用级),也可以简化RabbitMQ中的管理/管理/监控。如果您有一个新的作业类型,您只需要创建一个新的队列&绑定和更改路由密钥,而不是必须创建一个新的交换机,然后还必须创建一个新的队列&绑定。

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

我认为RabbitMQ网站上的Routing教程可能最适合你的场景,如果你正在寻找更多的细节(下面的链接是Python,但他们也有 c# )。