데이터베이스에서 액터 상태를 초기화해야 할 때 패턴을 물어보고 싶습니다. 나는 Future [...]를 반환하는 DAO를 가지고 있으며, nonblocking 메시지가 될 normaly는 미래의 완성에 대해 배우에게 보내야한다. 그러나이 경우는 다릅니다. 초기화가 완료되기 전에 액터 사서함에서 메시지를받을 수 없습니다. 데이터베이스가 완료 될 때까지 기다리는 동안 액터 스레드를 차단하는 유일한 방법입니까?Akka 액터가 데이터베이스에서 상태를 읽습니다.
2
A
답변
3
가장 간단한 방법은 두 가지 수신 방법을 정의하는 것입니다. initializing
및 initialized
이고, def receive = initializing
으로 시작합니다. inizializing
컨텍스트 내에서 InitializationNotReady
과 같은 메시지를 보내면 다른 배우에게 나중에 다시 시도해야한다고 알릴 수 있습니다. 액터가 초기화 된 후 context become initialized
으로 컨텍스트를 전환하면 정상적으로 작동 할 수있는 새 상태가됩니다.
결국 또 다른 좋은 방법은 Akka Persistence입니다. Stateful 액터는 내부 상태를 유지하여 액터가 시작되거나 JVM 충돌 후 다시 시작되거나 감독자에 의해 다시 시작되거나 클러스터에서 마이그레이션 될 때 복구 할 수 있습니다.
이 경우 Akka 지속성을위한 여러 저장 옵션이 있으므로 데이터베이스에서 상태를 복원 할 수 있습니다. 당신은 그들을 here 찾을 수 있습니다. 회복 후, 익숙해 진 것처럼 메시지를받을 수 있습니다.
관련 문제
- 1. Akka 액터가 초기화되지 않습니다.
- 2. 원격 Akka 액터가 사용 가능한지 확인합니다.
- 3. Akka 클러스터링 - 특정 컴퓨터에 액터가 남아있게합니다.
- 4. akka 액터가 os 프로세스에 영향을 미치지 않습니다.
- 5. 스카라에서 Akka 액터가 어떻게 생성되었는지 테스트하는 방법
- 6. akka 원격 액터 - 발신자와 수신자 액터가 동일한 프로젝트에 있어야합니까?
- 7. tell()에 문제가 있습니까? 맞춤 Akka 라우터의 다른 액터가 있습니까?
- 8. DeathWatch를 사용하여 Akka 액터가 죽을 때 메시지가 전송되지 않습니다.
- 9. Akka Stream postStop에서 노드의 결과 상태를 쿼리
- 10. 액터가 10000 개를 만들었지 만 액터가 왜 모든 작업을 완료 할 수 없습니까?
- 11. 액터가 특정 메시지를 수신했는지 테스트합니다.
- 12. 스칼라/아크카 액터가 종료되었는지 확인
- 13. 싱글 톤 클러스터 액터가 시작되지 않습니다.
- 14. Akka-Actors를 만들 패턴이 있습니까?
- 15. FSM-s를 사용하여 Akka 액터가 장기 실행 작업을 수행하는 방법을 나타냅니다.
- 16. MySQL 데이터베이스에서 BLOB로 저장된 Word DOC을 읽습니다.
- 17. Akka 원격 배포 오해?
- 18. akka 성능 디버깅
- 19. akka - Java stateful 액터 퍼시스턴스
- 20. Akka 액터의 의도적 인 차단
- 21. 액터가 끝날 때까지 기다리십시오()
- 22. 스칼라 : 액터가 왜 가벼운가요?
- 23. Akka 액터의 선물 사용
- 24. 클러스터에서 Akka 액터 검색
- 25. Akka 액터 인스턴스 및 클래스
- 26. Actor Status 찾기 Akka Scala
- 27. 오류 Akka 라우터 구성
- 28. Akka 액터 재시작 예약
- 29. 호스트 이름을 사용할 때 AKKA 리모팅 조회 원격 액터가 작동하지 않습니다.
- 30. Akka 액터가 실패했습니다. VerifyError : 분기 대상의 스택 맵 프레임이 일치하지 않습니다.
내 경우에는 Akka 지속성이 좋아 보이지만 스냅 샷에는 이벤트 소싱 및 추가 저장 장치가 필요하지 않습니다. 내 전표에서 스냅 샷을 읽고 싶습니다. 가능합니까? 액터 상태가 내 유스 케이스와 일치하지 않기 때문에 메시지가 별도의 액터가 아닌 일반 코드 (화재 및 잊어 버림)에서 전송됩니다. – user2860204
그렇다면'stash'가 도움이 될 수 있습니다. 액터를 시작할 때 모든 들어오는 메시지를 숨길 수 있습니다. 초기화가 완료된 후에는 수신 된 모든 메시지의 잠금을 해제하여 지금 수신 한 것처럼 보입니다. stashing에 대해 http://doc.akka.io/docs/akka/current/scala/actors.html#Stash 문서에서 읽을 수 있습니다. –