RabbitMQ主题中的字段顺序是否重要?

时间:2011-03-22 17:50:01

标签: rabbitmq amqp

我正在为将使用RabbitMQ收集日志消息的应用程序创建日志记录工具。我正在尝试决定如何构建消息的主题字段。

我能做到的一种方式是:

<instance uuid>.<major component>.<minor component>.<log level>

或其他替代方案如下:

<log level>.<major component>.<minor component>.<instance uuid>

在决定主题中字段的顺序时,是否应考虑任何性能或其他因素?或者它几乎是武断的?据我所知,如果我打算使用主题交换,他们同样容易使用通配符。

2 个答案:

答案 0 :(得分:1)

我认为订单可能不如复杂性(期间分隔符的数量)和您的经纪人将拥有的绑定数量那么重要。绑定中使用的通配符数量也会影响它。但问题是,所有这些会对性能产生多大影响?

如果你只有几百个队列与这个计划绑定,我不会担心。 Rabbit团队刚刚在主题交换中的消息路由领域发布了一个新的blog post,很明显,它已经过大量优化。鉴于该博客文章中的最后一个图表,我至少会安装并运行Rabbit MQ 2.4.0作为您的经纪人。

最后,我建议使用您提出的两个订单运行一些非常逼真的浸泡/性能测试,看看它们是否与您的应用程序表现不同。这是查明订购是否会影响您的系统的最可靠方法。

答案 1 :(得分:0)

我认为唯一重要的区域是你需要使用#wildcard来路由和交换队列。

如果你有a.b.c.d和a.f.g.h那么你可以做一些事情。#

但是如果你使用d.a.c.b和h.a.g.f那么你需要做一些类似* .a。#的事情,你可能会尝试#.a。#,这将达不到你期望的效果。

  • 比#快,一个通配符匹配比两个快。

另一方面,一长串非通配符匹配可能比您想象的要快。基准时间。