RabbitMQ:每种消息类型一个队列,还是邮寄路由?

时间:2014-07-09 08:47:58

标签: rabbitmq

我使用RabbitMQ作为集成分发系统,ETL类型,轮询器从源数据库查询表,在RabbitMQ上发布结果,结果根据其来源消耗(每个源1个队列(app。)保存在另一个形式。

我问是否每个查询和源码(app ..)拆分队列会更好,实际上它只是由来源完成,并且" postrouted"使用自定义有效负载标头。

我看到的唯一优势可能是缺陷,就是存在与查询相同数量的消费者。但它可能会成为一个问题...

感谢。

1 个答案:

答案 0 :(得分:2)

我想说,每个查询的一个队列在管理和监控方面可能会很快失控。

我发现每个目标有一个队列,然后使用路由键来指定在使用者中处理事物的方式< / em>代码(即 type )。这样,您可以使用 RabbitMQ 为您执行多路复用,并且使用者代码可以在每个目标点上的相同消息上单独运行。

当然,总有很多不同的方法,但我发现这对于 ETL 应用程序来说效果很好。如果你有大量的目的地,也许你会想要将目的地添加到路由键。如果您没有任何订购要求(即由于 RDBMS外键约束),您还可以考虑将多个使用者添加到同一队列以提高吞吐量。 (对于您确实有这种排序要求的情况,每个目的地的一个队列和提供的多路复用证明特别有用。)