2017-12-29 12 views
0

나는 개념상의 의심이있다. 특정 엔티티에 대한 이벤트가 읽기 측에서 순서대로 처리된다는 것을 알고 있지만 이전 이벤트가 성공적으로 처리되고 데이터베이스가 업데이트 될 때까지 다음 이벤트 처리가 대기하지 않는다고 생각합니다.Lagom의 읽기 측 프로세서에서 이벤트 처리

맞습니까? 그렇다면 이전 이벤트가 성공적으로 처리되고 읽기 측 데이터베이스가 업데이트 될 때만 이벤트가 읽기 측에서 처리되도록하는 방법이 있습니까?

답변

0

보통 Lagom 은 이벤트 태그 당 한 번에 하나의 이벤트 만 처리합니다. 이전 이벤트가 성공적으로 커밋되기 전에 다음 이벤트의 처리가 시작되는 상황이 없어야합니다.

이벤트 핸들러에서 비동기 작업을 명시 적으로 수행하는 경우에만 예외입니다. 그렇게 할 경우, 이벤트 처리가 해당 조치가 완료되기를 기다리지 않도록 특별히 처리해야합니다. 세부 사항은 사용중인 읽기 측의 유형에 따라 다릅니다.

카산드라 읽기 측 API는 이벤트 핸들러가 CompletionStage<List<BoundStatement>>을 리턴 할 것으로 기대합니다. 이 완료 단계는 이벤트 프로세서에 의해 호출 된 모든 비동기 작업이 완료된 후에 만 ​​완료해야합니다. CompletionStageCompletableFuture API는 여러 비동기 작업을 작성하고 순서를 지정하는 다양한 방법을 제공합니다.

JDBC 및 JPA 읽기 측 API는 이벤트 핸들러가 동기식 및 블로킹을 기대하며이를 처리하기 위해 전용 실행 컨텍스트에서 코드를 실행합니다. JDBC/JPA 이벤트 핸들러에서 비동기 액션을 호출하면 완료 될 때까지 명시 적으로 차단해야합니다.