2016-07-08 3 views
0

데이터베이스 액세스를위한 액터가있는 경우 액터는 모든 클라이언트를 처리하는 싱글 톤 인스턴스 또는 여러 클라이언트의 다중 인스턴스입니까? Actor preStart()postStop() 메서드는 모든 인스턴스에 대해 한 번만 호출됩니까? 또는 각각의 새로운 Actor 인스턴스가 생성 될 때 호출 될 것인가? 데이터베이스 초기화 코드를 preStart() 안에 넣고 연결 반환 코드를 postStop() 안에 넣는 것이 좋습니까?Akka 배우 preStart() & postStop() 메소드 비헤이비어?

감사

+0

'preXX' 함수가 상속 될 때마다 상속받습니다. 그래서, 싱글 톤이 아닙니다 –

답변

2

이 종류의 목적은 싱글 톤 묻는 것과 같다. 데이터베이스 액터 중 하나만 만들면 싱글 톤으로 동작하지만 일반적으로 액터는 이 아니고 싱글 톤입니다.

막 제작 한 경우에도 배우 시스템이나 감독자가 언제 다시 시작할 것인지 생각해야합니다.

라이프 사이클의 방법은 모든 액터라고

[업데이트] - 그들은 독립적 인 엔티티입니다.

데이터베이스 요청/데이터 액세스를 처리하기 위해 액터를 생성하는 경우 싱글 톤 의미를 갖는 단일 액터가있을 수 있지만 내부적으로는 실제로 데이터베이스 호출을 처리하는 액터 수를 많거나 적게 관리 할 수 ​​있습니다 . 이를 통해 데이터베이스의 초기화 및 정리를 한 곳 (최상위 액터)에서 처리하고 요청을 처리 할 더 많은 액터를 만들어 내부에서 확장 (필요한 경우)하고 오류를 적절하게 처리하도록 감독 할 수 있습니다.

이 시나리오에는 많은 선행 기술이있을 수 있으므로 다른 사람들이 어떻게 처리하는지 약간의 연구를하는 것이 좋습니다. `Actor`를 상속 한 액터 클래스로부터 새로운 액터를 생성 할 때마다 데이터베이스 드라이버 자체가 스레딩을 어떻게 처리하는지 알 수 있습니다.

+0

제 질문을 수정했지만 액터가 싱글 톤이 아니라는 것을 알았습니다. 따라서 데이터베이스를'postStop()'에서 닫는'preStart()'에 데이터베이스를 초기화 할 수 없습니다. –

관련 문제