나는 scala + Akka에서 손을 잡고 있으며 내결함성을 계산하려고합니다. 감독관으로부터 메시지를 받고 DB에 데이터를 삽입하는 배우가 있습니다. 감독자는 액터에 오류가 발생하면 액터를 다시 시작합니다.Akka 결함 허용 접근
DB에 연결 문제가있는 경우 postRestart()에서 연결 문자열을 변경하려고합니다. 이제는 하나의 DB에 연결 문제가있을 때마다 액터가 다시 시작되고 다른 DB에 데이터를 삽입하기 시작합니다.
이 방법으로 충분합니까? 권장되는 접근 방식은 무엇입니까?
관리자 :
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)
}
}
}