【问题标题】:RabbitMQ : Shovel to multiple servers from one queue based on messages routing keyRabbitMQ:根据消息路由键从一个队列铲到多台服务器
【发布时间】:2017-06-01 16:30:53
【问题描述】:

我的情景:

我们正在使用 RabbitMQ 将消息广播到网络中大约 300 台其他计算机。 我们在 Windows Server 上使用 RabbitMQ,C#.Net Client (EasyNetQ)

基本解决方案是为每个目标计算机分配一个routingkey,定义一个exchange并将每个routingKey绑定到一个队列,并为每个队列定义一个shovel到目标服务器。 在这种情况下,我们有 1 个交换器、300 个队列和 300 个铲子。

问题说明:这么多的铲子和队列的维护和管理是很困难的,并且会给rabbitmq带来更多的负载。

问题:我认为有一种简单的方法可以做到这一点:比如定义一个交换、一个队列和基于路由的铲子(300)。你推荐什么解决方案?

提前致谢。

【问题讨论】:

    标签: c# rabbitmq rabbitmq-exchange easynetq rabbitmq-shovel


    【解决方案1】:

    你的第二个解决方案对我来说看起来更好..
    在您的服务器上创建一个主题/扇出交换,并让所有铲子从该交换中为每个客户端消耗。
    您可以使用广播策略在该交换上发布消息,也可以使用通配符作为路由密钥。

    【讨论】:

    • 您好,谢谢您的回答,我检查了您的解决方案(并在交换时倾斜了铲子)。但是通过这种方式,RabbitMQ 再次为每个铲子定义自己定义了一个队列。我更喜欢自己定义队列而不是 rabbitmq(有意义的命名)。
    • 是的,他们会创建独占队列,如果您删除铲子,这些队列也会自动删除。但是,如果您想自己创建队列,我想不出任何其他解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 2015-10-14
    • 2015-10-21
    相关资源
    最近更新 更多