dddd를 사용하여 이벤트 소스 시스템을 구현하려고합니다. 현재 나는 어떻게 내 이벤트가 경계 상황의 경계를 넘나들고 있는지 고심하고있다. 바운드 컨텍스트 내부 및 외부 이벤트 소싱
제품 관리는 제품에 대한 모든 지식을 가지고
- 제품 관리 : 두 경계 상황이 상상. 단순화를 위해 그것은 단지 "이름"입니다. 물류 시스템에도 제품이 있지만 메타 데이터에 대한 지식이 없습니다. 그 (것)들을 위해 ID를 가진 주로 육체적 인 상자이다. 그러나 누군가이 제품을 검색 할 때 이름을 표시하려고합니다. 따라서 ProductManagement BC는 제품이 등록되고 이름이 변경되었음을 Logistics BC에 알려야합니다. 그래서 ProductAggregate 내부에서 제기 ProductManagement의 이벤트로 끝날 것이다 :
ProductManagement.Events.ProductRegistered ProductManagement.Events.ProductNameChanged
내가 도착했을 때 제대로이 내가 이벤트 저장소에 저장됩니다 이벤트가 있습니다. 그리고 이들은 또한 메시지 버스에 게시 될 이벤트들입니다. 그래서 물류 측면에서 나는이 이벤트들을 구독 할 것입니다. 여태까지는 그런대로 잘됐다.
문제는 다음과 같습니다. 물류 측면에서이 행사를 어떻게 처리합니까? 본 버논 (Vaughn Vernon)은 애플리케이션 레이어에있는 이벤트 핸들러를 사용하는 것이 가장 좋으며, 기본적으로 애플리케이션 서비스가 될 것이라고 말했다. 그는 또한 하나 또는 여러 명령으로 변환하는 것이 가장 좋을 것이라고 말했다. 접수 된 모든 이벤트를 다시 물류 측면에 저장합니까? 명령도 저장합니까? 문제가 발생하면 현재 상태를 어떻게 재현 할 수 있습니까? 또는 수신 경계가있는 컨텍스트에서의 처리 오류가 아니라 오히려 잘못된 이벤트임을 어떻게 알 수 있습니까? 변형 된 명령이 거부되면 어떻게합니까?
물류 측면의 집계에서 계산이나 변경이 없음을 알고 있습니다. 그러나 이것이 내 질문에 대해서는별로 중요하지 않다고 생각합니다.