2

由于本地输入队列的硬性要求,NServiceBus 分配器/工作器模式对 MSMQ 非常有意义。

但 RabbitMQ 并非如此,我试图了解 NServiceBus 分发器如何以及何时与 RabbitMQ 相关。使用 RabbitMQ,多个工作人员可以从同一个远程队列中读取。

实际场景类似于使用 AWS 自动扩展组来扩展指向高可用 RabbitMQ 集群的工作人员。现在完全避免分发器使设置的构建、测试和配置变得更加简单。

想法?

4

2 回答 2

1

由于 RabbitMQ 传输属于代理式总线,因此,在您的用例中,不使用分发器会更有意义。

所有代理式传输也是如此,您可以在其中使用竞争的消费者模式进行横向扩展。

于 2014-07-03T18:16:53.360 回答
0

NServiceBus 是一个优秀的系统,并且在大多数没有集成分发器的消息队列系统(在 RabbitMQ 中使用交换器)的情况下都能创造奇迹。我们在我们公司使用 NServiceBus。

Azure 队列和 MSMQ 是此类队列技术的完美示例。

NServiceBus 在内部处理分发,因此为您重现此功能。

但是...如果您有幸强制使用可以使用的排队技术,那么我强烈建议您研究 RabbitMQ 和名为 MassTransit 的产品(开源)

http://masstransit-project.com/

MassTransit 可以反过来在这两种模式下运行,并且会为您委派或模拟分配 - 但是我仍然对 NServiceBus 情有独钟,我们这里的高级开发人员也是如此。

根据此页面... http://docs.particular.net/nservicebus/load-balancing-with-the-distributor 使用分发器仅在使用 MSMQ 时有用 - 如果您不使用 MSMQ,则没有意义。RabbitMQ 和其他传输将允许多个消费者访问同一个队列,而 MSMQ 不允许。简而言之,分发者将从主队列中获取消息并将它们分发到多个工作队列中,因为他们报告说他们已经完成了他们正在处理的任何事情。

于 2014-07-07T18:25:30.070 回答