由于本地输入队列的硬性要求,NServiceBus 分配器/工作器模式对 MSMQ 非常有意义。
但 RabbitMQ 并非如此,我试图了解 NServiceBus 分发器如何以及何时与 RabbitMQ 相关。使用 RabbitMQ,多个工作人员可以从同一个远程队列中读取。
实际场景类似于使用 AWS 自动扩展组来扩展指向高可用 RabbitMQ 集群的工作人员。现在完全避免分发器使设置的构建、测试和配置变得更加简单。
想法?
由于本地输入队列的硬性要求,NServiceBus 分配器/工作器模式对 MSMQ 非常有意义。
但 RabbitMQ 并非如此,我试图了解 NServiceBus 分发器如何以及何时与 RabbitMQ 相关。使用 RabbitMQ,多个工作人员可以从同一个远程队列中读取。
实际场景类似于使用 AWS 自动扩展组来扩展指向高可用 RabbitMQ 集群的工作人员。现在完全避免分发器使设置的构建、测试和配置变得更加简单。
想法?
由于 RabbitMQ 传输属于代理式总线,因此,在您的用例中,不使用分发器会更有意义。
所有代理式传输也是如此,您可以在其中使用竞争的消费者模式进行横向扩展。
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 不允许。简而言之,分发者将从主队列中获取消息并将它们分发到多个工作队列中,因为他们报告说他们已经完成了他们正在处理的任何事情。