RabbitMQ:每个消息类型一个队列,或者post路由



我使用RabbitMQ作为一个集成分发系统,类似于ETL,轮询器从源数据库查询表,在RabbitMQ上发布结果,结果根据它们的源(每个源(应用程序)一个队列)以另一种形式保存。

我在问是否可以更好地将每个查询和源(app..)的队列分开,实际上它只按源完成,并使用自定义有效负载头进行"后路由"。

我看到的唯一的优势,这可能是一个缺陷,是有相同数量的消费者有查询要做。但这可能会成为一个问题……

谢谢。

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

我发现每个目的地有一个队列很好,然后使用路由键来指定在消费者代码中应该如何处理事情(即类型)。这样,你就可以让RabbitMQ为你做多路复用,并且消费者代码可以在每个目标点的相同消息上单独运行。

当然,总是有许多不同的方法,但我发现这对于ETL应用程序来说往往工作得很好。如果您有大量的目的地,也许您也想将目的地添加到路由键中。如果您没有任何排序需求(例如,由于RDBMS外键约束),您还可以考虑向同一队列添加多个消费者以提高吞吐量。(对于有这种排序需求的情况,每个目的地一个队列和它提供的多路复用被证明是特别有用的。)

最新更新