当前位置:   article > 正文

Scala---Akka Actor(三)Actor的持久化_akka scala 用的什么db

akka scala 用的什么db

之前的几部分Fault Tolerance,Dispatch,Mailbox是针对一些特定的应用场景,会需要用到不同的配置,这里先省略一下。至于Routing这一部分,应该是最接近分布式的一部分,放到之后在细细研究。FSM这一部分,需要一定的系统架构方面的知识,我就是看了个热闹。


(一)持久化需要什么?

说到持久化,一定会想到数据库,日志文件(journal),快照(snapshot)之类的。而Actor的持久化同样需要这些东西,在本文中,我们使用的是journal和snapshot来进行Actor的持久化操作。


我们使用Akka提供的持久化工具,需要添加依赖:

"com.typesafe.akka" %% "akka-persistence" % "2.5.6"

我们使用LevelDB来进行journal的保存,添加依赖:

  1. "org.iq80.leveldb" % "leveldb" % "0.9"
  2. "org.fusesource.leveldbjni" % "leveldbjni-all" % "1.8"

添加依赖之后,需要在application.conf文件中队其进行配置:

akka.persistence.journal.plugin = "akka.persistence.journal.leveldb"
akka.persistence.snapshot-store.plugin = "akka.persistence.snapshot-store.local"
akka.persistence.journal.leveldb.dir = "log/journal"
akka.persistence.snapshot-store.local.dir = "log/snapshots"
# DO NOT USE THIS IN PRODUCTION !!!
# See also https://github.com/typesafehub/activator/issues/287
akka.persistence.journal.leveldb.native = false  //因为我们本地并没有安装leveldb,所以这个属性置为false,但是生产环境并不推荐使用

(二)持久化的原理

在Akka中,支持持久化的Actor是PersistentActor。需要实现三个方法来完成持久化的操作。

override def persistenceId

这个方法是用来给当前的Actor设定指定的id,通过这个id,Actor将事件保存到指定的journal中,或者保存当前的snapshot。

override def receive
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/179757
推荐阅读
相关标签
  

闽ICP备14008679号