반응형
Akka 유한 상태 머신 인스턴스
내 사용 사례에 Akka의 유한 상태 머신 프레임 워크를 활용하려고합니다. 다양한 상태를 거치는 요청을 처리하는 시스템에서 작업 중입니다.
여기서 요청은 종속 된 응용 프로그램과 함께 배포해야하는 응용 프로그램 이름입니다.
Request for application A -> A is in a QUEUED state
Discover A's dependency B -> B is in a QUEUED state
B is being processed -> B is in a PROCESSING STATE
A is being processed -> A is in a PROCESSING STATE
B is processed -> B is in a DONE state
A is processed -> A is in a DONE state
이를 위해 나는 발견 시간에 유한 상태 머신을 초기화하고 있습니다. 따라서 A의 FSM은 요청이 들어 오면 생성되고 B의 FSM은 B액터 중 하나에서 발견 되면 초기화됩니다 .
FSM 인스턴스를 초기화하고 모든 행위자에게 전달하는 동시에 tell상태 머신이 올바른 상태가되도록 데이터에서 수행되는 작업에 대한 FSM을 전달합니까?
다음은 상태 머신의 관련 부분입니다.
when(QUEUED, matchEvent(requestAccepted.class, MyApp.class,
(requestAccepted, service) ->
goTo(PROCESSING).replying(PROCESSING)));
when(PROCESSING, matchEvent(completed.class, MyApp.class,
(completed, service) -> goTo(DONE).replying(DONE)));
// During transitions, save states in the database.
onTransition(matchState(PROCESSING, DONE, () -> {
nextStateData().setServiceStatus(DONE);
databaseWriter.tell(nextStateData(), getSelf());
다음은 요청을 처리하는 액터 중 하나의 예입니다.
ProcessingActor extends AbstractActor {
@Override
public void onReceive(Object message) throws Throwable {
if (message instanceof processApplication) {
// process the app
// Initialize FSM for the Application
FSM myFSM = Props.create(MYFSM.class);
myFSM.tell( new completed(processApplication.app)
}
이것이 상태 머신을 초기화하고 사용하는 올바른 방법입니까? 또는의 생성자에서 초기화가 발생해야 ProcessingActor합니까? 그러나이 경우 애플리케이션 (데이터) 당 하나의 상태 머신이 없습니다.
참고 URL : https://stackoverflow.com/questions/50681526/akka-finite-state-machine-instances
반응형
'Program Club' 카테고리의 다른 글
| DICTATION_MODE에서 android.speech.SpeechRecognizer 사용시 지연 (0) | 2020.12.13 |
|---|---|
| "꿈을 제어"하기 위해 수업을 사용하는 방법? (0) | 2020.12.13 |
| Plexus 구성 요소에서 현재 MavenSession 또는 MavenExecutionRequest를 가져 오는 방법 (0) | 2020.12.13 |
| "장치 로그인"타임 라인 및 / 또는 offline_access + 1 회 로그인에 대한 대안 (0) | 2020.12.13 |
| PEM_read_bio_PrivateKey ()는 ECB 모드에서만 NULL을 반환합니다. (0) | 2020.12.13 |