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中的管理/管理/监控。如果您有一个新的作业类型,您只需要创建一个新的队列&绑定和更改路由密钥,而不是必须创建一个新的交换机,然后还必须创建一个新的队列&绑定。
如果以后你有一个完全不同的应用程序,那么我会说,是时候为它创建一个新的交换,然后遵循我上面提到的相同的通用模型(假设它在高层的行为类似)。
我认为RabbitMQ网站上的Routing教程可能最适合你的场景,如果你正在寻找更多的细节(下面的链接是Python,但他们也有 c# )。