2012-01-16 3 views
0

few questions에 대한 응답에서 Jonathon Oliver는 AsynchronousCommitDispatcher를 사용하여 여러 작업 단위를 처리한다고 언급합니다.EventStore와 둘 이상의 작업 단위가 있습니까?

나는 내 프로젝트의 설계 단계에서 여전히 나는 (여전히 CRQS 및 ES 학습)과 몇 가지 질문이 : 내가 도메인에 의해 영향을받는 각 집계 루트에 대한 AsynchronousCommitDispatcher을 만들겠습니까)

1 이벤트가 제기 되었습니까?

2) 디스패치 이벤트가 다른 사용자에 의해 잠긴 경우 집계 루트를 변경할 수없는 일종의 잠금 메커니즘이있는 경우 어떻게됩니까? 잠금이있는 경우 AsynchronousCommitDispatcher가 다시 시도합니까?

3) 도메인 이벤트가 처리되기 전에 시스템이 다운되면 어떻게됩니까? 내가 처리되지 않았다는 사실을 계속 지키지 않는다면 잃어 버리지 않을 것입니까?

4) Dispatcher의 유형은 유선을 통해 메시징을하거나 읽은 모델을 업데이트하는 것이 었습니다. 여기에서 다른 집계 루트를 업데이트하는 데 사용합니다. 나는이 정확한가?

TIA

JD

답변

2

(가) 운영자가 모든 모든 후 와이어 에 이벤트를 밀어 대해 완전히 성공적이었다 확약. 아니요, 지정된 엔드 포인트에 둘 이상의 디스패처가 필요하지 않습니다. Dispatcher를 사용하는 AsyncCommitScheduler는 멀티 스레드이며 한 번에 둘 이상의 이벤트를 전달할 수 있습니다.

발송자는 들어오는 메시지를 처리하는 것이 아니라 메시지 처리기가 처리해야합니다. 발송자는 모든 것이 완료되면 발송합니다.

예 dispatchers는 독자가 생각하는 방식이 아닌 읽기 모델을 업데이트하는 데 도움을 줄 수 있습니다. 대신, 발송자는 메시징 프레임 워크 (MSMQ, RabbitMQ 또는 상위 레벨의 NServiceBus/MassTransit)로 메시지를 보냅니다. 그런 다음 뷰 모델에서 메시지를 받으면 그에 따라 뷰 모델 테이블을 업데이트합니다.

+0

답장을 보내 주신 Jonathan에게 감사드립니다. 나는 다른 집계를 수정해야하는 집계 루트가있는 경우 조금 혼란 스럽다. 어떻게 할 것인가? 이벤트 저장소 기능 외에서 수행 할 작업입니까? –

+0

EventStore는 집계 또는 그와 비슷한 것을 신경 쓰지 않습니다. 스트림의 마지막에 이벤트를 추가하는 것에 만 관심이 있습니다. –

관련 문제