DDD의 응용 프로그램 이벤트?

Jan 01 2021

이 질문은 다음과 유사합니다. DDD에 애플리케이션 이벤트 용어가 있습니까? ,하지만 거기에 주어진 설명을 내 특정 문제에 적용하는 방법을 모르겠습니다.

나는 a 가 있고 실행이 끝나면 SearchFilmUseCase이벤트를 발생시키고 싶습니다 FilmSearchedEvent. 현재 애플리케이션 계층이 이벤트를 발생시키고 있습니다. 도메인에서이 이벤트를 발생시킬 수있는 유일한 방법은 FilmRepository. 그러나 저장소는 인터페이스 일 뿐이므로 이벤트를 발생시킬 수 없습니다.

응용 프로그램 계층에서 이벤트를 발생시키는 것은 올바르지 않다고 생각합니다. 이 상황에 어떻게 접근 할 수 있습니까?

답변

2 choquero70 Jan 03 2021 at 13:52

한 가지 해결책은 검색을 수행하고 이벤트를 발생시키는 도메인 서비스를 만드는 것입니다.

1 Albert Jan 01 2021 at 20:09

모든 도메인 이벤트는 도메인 계층에서 발생해야합니다. 가장 좋은 곳은 작업이 실제로 수행되어야하는 집계 루트입니다. 집계 루트에는 발생한 모든 도메인 이벤트가 포함될 수 있으며 애플리케이션 계층에서이를 가져 와서 이벤트 버스에 게시 할 수 있습니다.