DDD 서술에서 반환 도메인 이벤트 패턴은 도메인 이벤트를 관리하는 방법으로 설명됩니다. 개념적으로 집계 루트는 도메인 이벤트의 목록을 유지하며 도메인 이벤트의 일부 작업을 수행 할 때 채워집니다.DDD - "도메인 이벤트 반환"패턴의 트랜잭션을 처리하는 방법은 무엇입니까?
집계 루트에 대한 작업이 완료되면 응용 프로그램 서비스 계층에서 DB 트랜잭션이 완료된 다음 응용 프로그램 서비스가 도메인 이벤트를 반복하고 이벤트 디스패처를 호출하여 해당 메시지를 처리합니다.
제 질문은 지금 거래를 처리하는 방식에 관한 것입니다. 이벤트 발송자가 처리하는 각 이벤트에 대해 새 트랜잭션을 관리해야합니까? 또는 응용 프로그램 서비스가 도메인 이벤트 디스패처를 호출하는 도메인 이벤트 반복 내에서 트랜잭션을 관리해야합니까? Dispatcher가 RabbitMQ와 같은 인프라 메카니즘을 사용할 때는 문제가 발생하지 않지만 도메인 이벤트가 진행중인 경우 처리됩니다.
내 질문과 관련된 하위 질문. ORM 훅 (예 : IPostInsertEventListener, IPostDeleteEventListener, IPiberUpdateEventListener from NHibernate)을 사용하여 집계 루트에서 도메인 이벤트 반복을 실행하는 방법에 대한 귀하의 의견은 응용 프로그램 서비스에서 수동으로 수행하는 대신 무엇입니까? 너무 많은 커플 링을 추가합니까? 각 사용 사례 (집계에 도메인 이벤트가 반복되고 디스패처 내에 있지 않은 경우 새 트랜잭션 생성이 될 수 있음)마다 동일한 코드가 작성되지 않아도되기 때문에 더 좋습니다.
당신은 https://blog.jayway.com/2013/06/20/dont-publish-domain-events-return-them/을 언급하고 있습니까? – guillaume31