1

我刚刚创建了一个 API,其中来自 API 的请求使用请求/响应模式通过 MassTransit/RabbitMQ 转发到后端服务。我们现在正在考虑将其推向生产,并希望在不同的服务上运行应用程序的多个实例(API 和服务),并使用负载均衡器在它们之间分配请求。

这使我们处于一个位置,如果其中一台服务器出于任何原因从池中取出,我们可能会丢失所有消息。我正在考虑在服务器之间创建一个 RabbitMQ 集群(每个服务器都有一个本地安装),并且想知道在这种情况下我将如何设置竞争消费者。

RabbitMQ 或 MassTransit 是否会处理此问题,以便只有一个消费者会收到请求,还是所有消费者都会收到并尝试响应?此外,对于 RabbitMQ 集群,MassTransit/RabbitMQ 如何处理节点故障?

4

1 回答 1

2

你应该看看这个文件。 http://www.rabbitmq.com/distributed.html

很好地解释了常见的分布式场景。对于您的情况,我认为联合比集群更适合。如果您选择集群,您应该查看镜像队列。

如果您只需要性能,那么最好让一个服务器来处理您的消息队列,而另一台服务器将连接到它并产生/使用消息。

我不知道 Mass Transit 是如何工作的,但是,如果使用请求/响应,您应该将单次消息传递给单个消费者,如果消息没有被确认(消费者崩溃),则其他消费者应该接收它.

于 2012-06-18T18:45:13.740 回答