2012-11-18 1 views
3

CQRS à la Greg Young에 따르면 이벤트 처리기 (및 다운 스트림 이벤트 비정규 화기)는 이벤트 게시자가 이전에 게시 한 들어오는 이벤트에 반응합니다.CQRS 시스템에 새 이벤트 비정 수기를 도입하려면 어떻게합니까?

이제 런타임에 새로운 이벤트 비정규 화기를 추가한다고 가정 해 보겠습니다. 기본적으로 쉽지만 데이터를 현재 상태로 가져와야합니다.

가장 좋은 방법은 무엇입니까?

이벤트 저장소로 주문 불량 요청을 보내고 이전에 방출 된 모든 이벤트를 요청해야합니까?

또는 더 좋은 방법이 있습니까?

답변

4

새 처리기에 대해 모든 (필수) 이벤트를 가져 와서 재생할 수 있습니다. 근본적으로 원하는 것은 지속 된 뷰 모델을 적절한 상태로 가져 오는 것이므로 별도의 프로세스에서 수행 할 수 있습니다.

생산 예를 보려면 Rinat Abdullin의 Lokad.CQRS 샘플 프로젝트를 살펴보십시오. 특히 다소 복잡한 경우에도 SaaS.Engine.StartupProjectionRebuilder은 흥미로운 출처가 될 수 있습니다.

+0

답장과 링크를 보내 주셔서 감사합니다. 이 작업을 별도의 프로세스로 실행하는 것이 좋다고 생각합니다. 또한 작업을 수행하는 방법이 기본적으로 분명합니다. 유일한 질문은 누구입니까? 이벤트 처리기? 관리자가 "수동으로"? ...? –

+0

본 적이 있습니다. http://stackoverflow.com/questions/2559096/cqrs-how-to-handle-new-report-tables-or-how-to-import-all-history-from-the-e ? rq = 1이이 질문에 대답합니다. –

4

투영을 빌드하여 마지막으로 본 이벤트를 기억할 수도 있습니다. 그런 다음 시작시에이 이벤트와 모든 이벤트를 요청합니다. 이전 프로젝션을 다시 시작하고 새 프로젝션을 구축하면 대략 동일한 상황이됩니다.

+0

좋은 아이디어 :-) 공유 주셔서 감사합니다! –

1

바운드 컨텍스트 복합 통합을 사용하는 경우 전체 읽기 모델을 삭제하고 다시 작성해야 할 수 있습니다.