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

不在 RabbitMQ 上使用默认交换的原因?

佘茂才
2023-03-14

我已经开始使用RabbitMQ,我的用例非常简单——生产者将消息放在队列中,由消费者处理。每条消息最多由一个消费者处理,消息根据队列名称从生产者定向到消费者。

< code >直接交换看起来非常好,并且< code >默认交换是< code >直接交换。

是否有任何原因(性能、管理、许可等)不使用默认交换并创建自己的交换?例如,我将使用高可用性队列(https://www.rabbitmq.com/ha.html),并且不确定如果所有HA队列都在默认交换上而不是不同的交换上,是否会对集群产生任何负面影响?

共有1个答案

牛兴安
2023-03-14

使用默认交换,您可以获得性能,因为几乎不涉及路由逻辑,但您最终会将发布者与消费者耦合,这在消息传递中有点反模式。

同时,如果您关注的是性能,我怀疑RabbitMQ的路由性能是否会是您遇到的第一个问题。在考虑性能时,队列分页、HA情况下的网络队列同步等似乎是我需要担心的问题。

 类似资料:
  • 是否有可能为带有“直接”类型的Rabbitmq交换设置一些“默认”队列? 比如,我有一个exchange A,队列Q1、Q2、Q3和QDef。因此,如果使用路由密钥Q1发布某个消息,它将转到Q1。但如果消息使用路由密钥Q4,则它应该转到QDef。若路由密钥不是现有队列的名称,则消息应转到QDef。 有可能做兔子吗?也许交换不应该是“直接”类型,而应该是其他类型? 换句话说。如果某个消费者为某个路由

  • 我在camel中设置了一个简单的泵,它使用以下URI从供应商的rabbitmq服务器消耗资源: (他们的交换设置为autodelete=true,durable=false) 运行时,它会创建一个新队列(myQueueName),该队列也是autodelete=true、durable=false。 我希望我的队列是autodelete=false,因为供应商系统和我的系统之间有一些网络不稳定。

  • WildFly Full 10.1.0.final(WildFly Core 2.2.0.final):我正在寻找一种可能性,可以触发Java EE应用程序的部署(打包为EAR文件),而无需启动WildFly服务器或使用部署扫描程序。是否可以将ear文件添加到配置文件中,以便服务器在第一次启动时就开始部署我的应用程序?

  • 我最近安装了蟒蛇版本的Python。现在,当我在终端中键入python时,它会打开Anaconda发行版,而不是默认发行版。如何让它在windows上使用命令python的默认版本?我已经将分发添加到路径中,但当我键入python--version时,它显示的是conda版本,而不是系统版本。

  • 我正在尝试编写一个应用程序,测试将N个交换绑定到内存、IO等相同队列的效果。 所有测试都使用“主题”交换类型。我遇到的问题是,当我使用多个exchange进行测试时,我没有收到我发布回的所有消息。但是,当我使用1 exchange时,我会收到所有消息。 你知道为什么会这样吗? 谢谢 编辑: 我有一个队列,它使用相同的绑定键绑定到两个“主题”交换: *。系统日志# #。系统错误 我将向每个excha

  • 我们有一个队列和交换集群来支持消息。 null 我们每个队列都有一个交换,以便在重试超时期间后将重试的消息发送回特定的队列。 在这个场景中,我们有3个交换(“foo-exchange”、“foo-exchange-dead”、“baz-exchange-retry(每个队列1个fanout exchange)”和3个队列(“baz-queue”、“baz-queue-delay”、“baz-que