如何在 Actor 中持久化消息并在失败后回复(JVM 崩溃)?

Posted

技术标签:

【中文标题】如何在 Actor 中持久化消息并在失败后回复(JVM 崩溃)?【英文标题】:How to persist messages in Actor and reply after failure(JVM crash)? 【发布时间】:2021-12-13 09:07:09 【问题描述】:

我将为超过 5000 个客户使用演员,以便在他们到达时向他们传递消息。 如果客户端断开了存储在各个 Actor 邮箱中的客户端消息。但是如果 jvm 崩溃,则 Actor 邮箱中的所有消息都将被刷新。 如果我使用持久性演员,我会将演员的每条消息存储在磁盘中?然后像磁盘上的邮箱一样回复actor?

【问题讨论】:

【参考方案1】:

广泛的方法是使用 Akka Persistence(这听起来很适合事件溯源),以便可以恢复 actor 的状态。您可以选择并设置一个持久化后端(例如本地 leveldb one 或网络距离的数据库,如 mysql/Postgres 或 Cassandra)来存储事件。

注意邮箱中的消息不会被持久化;只有那些被actor处理的消息才能持久化状态变化。

【讨论】:

以上是关于如何在 Actor 中持久化消息并在失败后回复(JVM 崩溃)?的主要内容,如果未能解决你的问题,请参考以下文章

响应式架构:消息模式Actor实现与ScalaAkka应用集成 pdf

如何避免activeMQ数据丢失

AKKA Inbox收件箱

Actor模型

Actor模型

Akka actor 可以参与 XA 交易吗?