如何在不可靠的网络环境中配置 MassTransit?

How to configure MassTransit in an unreliable network environment?

我正在尝试将 MassTransit 与 RabbitMQ 结合使用。 基本概念在测试项目中有效,但我需要的是以下内容:

我的系统将有一台或多台服务器对现实生活中的事件(电话)做出反应。这些事件将通过 MassTransit 和 RabbitMQ 转换为消息,这些消息将由一个或多个接收器通过单独的服务器(设置为 RabbitMQ 主机)接收。到目前为止一切顺利。

但是,我不能假设我总是在发布者和主机之间建立连接。假设发布服务器将继续使用现实生活中的事件,但现在无法发布它的消息。

所以,问题是:MassTransit 是否有某种机制可以在本地以某种方式存储消息,直到重新建立连接? 或者我是否也应该在每台发布服务器上安装 RabbitMQ,以创建本地交换?然后我必须让交换在重新连接后同步。

可能您必须实施存储和转发 策略。您可以将消息存储在持久性存储库(本地数据库)中,并通过 Masstransit 将之前存储的消息的通知委托给其他进程,而不是直接通过 MassTransit 和 RabbitMQ 发布您的消息。这种方法通常被称为 "Client High Availability"。这并没有像 RabbitMQ 实现的那样替代服务器上的标准 HA(高可用性)。但这是在分布式系统(如您描述的系统)中使用的一种好方法,因为它可以在服务器故障的情况下为您提供很多帮助(例如,RabbitMQ 服务器上的一个问题导致您仍然在商店中丢失一些消息一些客户,因此你可以让它再次处理)。