当前位置: 首页 > 知识库问答 >
问题:

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

方茂
2023-03-14

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

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

  • 酒吧1
  • 酒吧2
  • 酒吧3....

将有一组独立的消费者来处理“bar1”作业,然后是另一组消费者来处理“bar2”作业,依此类推

我试图找出任何特定的命名/路由结构是否有好处,但没有找到任何指向这种或那种方式的东西。

问题1)我应该使用多个交易所名称交易所:

  • exc_bar1
  • exc_bar2
  • exc_bar3

或者单一交易所是最佳交易所:

  • exc_foo

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

    < li>rk_bar1 < li>rk_bar2 < li>rk_bar3

无论如何,我都找不到任何东西,所以我认为这并不重要,但我认为最好问一下,以防我错过了什么,但这很重要。

背景信息

只是以防万一,它是相关的

创建者是一个 python webapp,使用兔子库 消费者是使用默认 rabbitmq 客户端库的 c# 应用程序

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

使用者可以设置 * 交换名称 * 路由密钥名称 * 队列名称

共有1个答案

邹丰羽
2023-03-14

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

然后可以使用路由密钥来指导消费者他们正在处理哪个作业。

只有一个交换既符合逻辑分组(即在应用程序级别),又简化了RabbitMQ中的管理/监督。如果有新的作业类型,只需创建一个新队列

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

我认为RabbitMQ网站上的路由教程可能最适合你的情况,如果你正在寻找更多的细节(下面的链接是Python的,但他们也有一个C#的)。

 类似资料:
  • 我最近开始学习Spring和spring-amqp,所以这个问题可能看起来很基本,所以请原谅我。 null 或者有一种方法可以Spring加载所有我的队列配置类,然后只使用如下所示的对象: 那么,如何在不执行每次的情况下获取确切队列的amqpTemplate呢? 每次请求到达我的服务时都做新的AnnotationConfigApplicationContext有什么害处?[我想为每个请求创建一个新

  • 数组实现简单队列 class Node(object): def __init__(self, data): self.data = data self.next = None def __str__(self) -> str: return '(data=%d)' % self.data class SimpleQueue(o

  • 队列是一种先进先出(FIFO,first-in-first-out)的数据结构 javascript代码实现队列: <!doctype html> <html> <head> <meta charset=utf-8 /> <title>Queue Sample</title> </head> <body> <script type="text/javascript">

  • 我目前正在研究普林斯顿算法第一部分的队列分配。其中一个任务是实现随机队列。这是一个关于使用不同数据结构的实现和权衡的问题。 问题: 随机化队列类似于堆栈或队列,只是从数据结构中的项中均匀随机地选择删除的项。创建实现以下API的通用数据类型: 这里的问题是实现de队列操作和迭代器,因为de队列删除并返回随机元素,迭代器以随机顺序迭代队列。 1.数组实现: 我考虑的主要实现是数组实现。除了随机性之外,

  • 我想知道是否有一个最佳实践来通知sqs队列的结束。我正在产生一群通用工作者来使用队列中的数据,我想通知他们,一旦他们检测到队列中没有更多的消息,他们就可以停止处理。sqs提供这种特性吗?

  • 本文向大家介绍php 数据结构之链表队列,包括了php 数据结构之链表队列的使用技巧和注意事项,需要的朋友参考一下 php 链表队列 实例代码: 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!