클러스터에서 샤딩을 사용하여 akka의 PersistentActor를 사용하여 내 상태를 추적합니다.akka persist 함수가 매번 처리되지 않음
case UpdateRoom(id, room, userId) => ((ret: ActorRef) => {
(userRegion ? GetRoleForRoom(userId, id)).mapTo[String] map { role =>
if (role == "owner") {
state = Some(room)
ret ! Success(room)
eventRegion ! RoomEventPackage(id, RoomUpdated(room))
println("works")
persist(RoomUpdated(room))(e => println("this doesn't always fire")
} else {
ret ! Failure(InsufficientRights(role, "Update Room"))
}
}
문제가 예상대로 함수의 나머지가 작동하는 동안 만 다른 모든 시간을 작동 영속화 즉 : 나는 내가 다음 코드를 통해 업데이트 할 수있는 '룸'이있다. ("작품"은 매번 인쇄되고, "항상 발사되는 것은 아닙니다"격차없이 두 번씩). 이벤트를 저장하기 위해 항상 업데이트 명령을 두 번 실행해야하지만 두 번 명령 저장을 위해 저장된 것처럼 보입니다.
akka persist의 중요한 부분이 누락 되었습니까?