赞
踩
之前的几部分Fault Tolerance,Dispatch,Mailbox是针对一些特定的应用场景,会需要用到不同的配置,这里先省略一下。至于Routing这一部分,应该是最接近分布式的一部分,放到之后在细细研究。FSM这一部分,需要一定的系统架构方面的知识,我就是看了个热闹。
说到持久化,一定会想到数据库,日志文件(journal),快照(snapshot)之类的。而Actor的持久化同样需要这些东西,在本文中,我们使用的是journal和snapshot来进行Actor的持久化操作。
我们使用Akka提供的持久化工具,需要添加依赖:
"com.typesafe.akka" %% "akka-persistence" % "2.5.6"
我们使用LevelDB来进行journal的保存,添加依赖:
- "org.iq80.leveldb" % "leveldb" % "0.9"
- "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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。