我正在尝试我的手在scala + Akka,我试图找出容错。我有一位演员从主管接收消息并将数据插入到数据库中。监督员在遇到故障时重新启动参与者。Akka容错方法
我正在更改postRestart()中的连接字符串,以防连接问题到达数据库。现在,只要有一个数据库存在连接问题,演员就会重新启动并开始将数据插入另一个数据库。
这是一个很好的方法吗?什么是推荐的方法?
主管:
class SocialSupervisor extends Actor {
override val supervisorStrategy=OneForOneStrategy(loggingEnabled = false){
case (e:Exception)=>Restart
}
val post_ref=context.actorOf(Props[Post])
def receive={
case Get_Feed(feed)=>{
//get data from feed
post_ref!Post_Message(posted_by,post)
}
}
}
演员:
class Post extends Actor{
val config1=ConfigFactory.load()
var config=config1.getConfig("MyApp.db")
override def postRestart(reason: Throwable) {
config=config1.getConfig("MyApp.backup_db")
super.postRestart(reason)
}
def insert_data(commented_by:String,comment:String){
val connection_string=config.getString("url")
val username=config.getString("username")
val password=config.getString("password")
//DB operations
}
def receive={
case Post_Message(posted_by,message)=>{
insert_data(posted_by, message)
}
}
}