我使用RabbitMQ作为集成分发系统,ETL类型,轮询器从源数据库查询表,在RabbitMQ上发布结果,结果根据其来源消耗(每个源1个队列(app。)保存在另一个形式。
我问是否每个查询和源码(app ..)拆分队列会更好,实际上它只是由来源完成,并且" postrouted"使用自定义有效负载标头。
我看到的唯一优势可能是缺陷,就是存在与查询相同数量的消费者。但它可能会成为一个问题...
感谢。
答案 0 :(得分:2)
我想说,每个查询的一个队列在管理和监控方面可能会很快失控。
我发现每个目标有一个队列,然后使用路由键来指定在使用者中处理事物的方式< / em>代码(即 type )。这样,您可以使用 RabbitMQ 为您执行多路复用,并且使用者代码可以在每个目标点上的相同消息上单独运行。
当然,总有很多不同的方法,但我发现这对于 ETL 应用程序来说效果很好。如果你有大量的目的地,也许你会想要将目的地添加到路由键。如果您没有任何订购要求(即由于 RDBMS外键约束),您还可以考虑将多个使用者添加到同一队列以提高吞吐量。 (对于您确实有这种排序要求的情况,每个目的地的一个队列和提供的多路复用证明特别有用。)