如何使用akka作为复制机制

如何使用akka作为复制机制,akka,Akka,我是akka的新手,打算在我的新项目中将其用作数据复制机制 在这个场景中,有一个主服务器和一个复制数据服务器。复制数据应包含与主数据相同的数据。每次主服务器中发生数据更改时,它都会向复制服务器发送一条更新消息。在这里,主服务器是发送方,复制服务器是接收方 但在挖掘文档之后,我仍然不确定如何满足以下用例: 当接收方崩溃时,发送方应将要发送的消息堆积起来,不应丢失任何消息。它应该能够在以后重新连接到接收器,并继续执行最后一条成功的消息 当发送方崩溃时,它应该重新启动,并且在重新启动之间不会丢失任何

我是akka的新手,打算在我的新项目中将其用作数据复制机制

在这个场景中,有一个主服务器和一个复制数据服务器。复制数据应包含与主数据相同的数据。每次主服务器中发生数据更改时,它都会向复制服务器发送一条更新消息。在这里,主服务器是发送方,复制服务器是接收方

但在挖掘文档之后,我仍然不确定如何满足以下用例:

  • 当接收方崩溃时,发送方应将要发送的消息堆积起来,不应丢失任何消息。它应该能够在以后重新连接到接收器,并继续执行最后一条成功的消息
  • 当发送方崩溃时,它应该重新启动,并且在重新启动之间不会丢失任何消息
  • 消息的处理顺序与发送顺序相同
所以我的问题是,如何配置akka来创建一个发送方和一个接收方来实现这一点

我不确定带DurableMessageBox的演员能否解决这个问题。如果可以,我如何模拟上述情况进行测试

更新:

在阅读了维克托指出的文档之后,我现在明白了我想要的是一次且仅一次的模式,这是非常昂贵的

在akka文件中,它说

实际传输可能提供更强的语义,但最多一次是您应该期望的语义。备选方案将是一次且仅一次,这是非常昂贵的,或者至少一次,这本质上需要消息处理的幂等性,这是用户级的问题


因此,为了实现有保证的交付,我可能需要转向其他MQ解决方案(例如),或者尝试使用DurableMessageBox实现一次且仅一次,看看是否可以通过我的特定用例来缓解它的复杂性。

您需要编写自己的远程处理,利用持久订户模式,因为Akka消息发送保证没有您想要的那么严格:

干杯, √