3

全部

是否可以将 akka.net 演员收件箱消息存储在数据库中?如果 akka.net 系统崩溃的主机会发生什么?

4

1 回答 1

6

持久化消息只是更大问题的一部分,即可靠的消息处理。简而言之,目标不仅是持久化消息,而且通常是为了保证消息已被接收并正确处理。默认情况下,Akka.NET 使用最多一次传递语义,这意味着使用尽力而为策略处理消息。这允许保持高吞吐量并使参与者的行为远离幂等。但是,有时我们需要对某些消息具有更高的可靠性。

其中一种技术是在您的参与者系统前面使用另一个可靠的队列(例如 RabbitMQ 或 Azure 服务总线)并将其用于可靠的消息传递。

其他解决方案是使用来自 Akka.Persistence 库的AtLeastOnceDeliverySemantic演员。在这里,您可以指定负责重新发送和确认已处理消息的参与者。从那里你可以决定使用 Akka.Persistence 本身内置的事件源原语来持久化传入的消息。在这种情况下,持久性后端是可插入的。

于 2015-12-04T09:47:34.197 回答