我正试图与RabbitMQ结合使用MassTransit。 基本概念是在测试项目中工作,但我需要的是以下内容:
我的系统将有一台或多台服务器对现实生活事件(电话)做出反应。这些事件将通过MassTransit和RabbitMQ转换为一个或多个接收器通过单独的服务器(设置为RabbitMQ主机)接收的消息。到目前为止一切都很好。
但是,我不能假设我总是在发布者和主机之间建立连接。假设发布服务器将继续使用现实生活事件,但现在无法发布它的消息。
所以,问题是:MassTransit是否有某种机制以某种方式在本地存储消息,直到重新建立连接为止? 或者我应该在每个发布服务器上安装RabbitMQ,以便创建本地交换机?然后我必须在重新连接后让交换自己同步。
答案 0 :(得分:2)
您可能必须实施存储转发政策。您可以将消息存储在持久性存储库(本地数据库)中,而不是通过MassTransit和RabbitMQ直接发布消息,并通过Masstransit委托其他一些处理通知之前存储的消息。此方法通常称为“客户端高可用性”。这不能替代服务器上的标准HA( High Availability ),就像RabbitMQ实现的那样。但它是一种在分布式系统中使用的好方法(如你所描述的那样),因为它可以在服务器故障的情况下帮助你很多(例如,RabbitMQ服务器上的一个问题导致你在商店内仍然有一些消息丢失一些客户,因此你可以再次处理它。)