2012-03-20 3 views
0

CQRS에 들어가기 전에 명령 (응용 프로그램 계층)과 이벤트 (도메인에서)가 있다는 것을 알고 있습니다.CQRS/EventStore : 이벤트 전달 실패는 어떻게 처리됩니까?

이벤트가 읽기 모델을 업데이트하는 간단한 경우에는 모델 업데이트 읽기가 실패합니까? "버그"가 없다면 오류가 발생하는 것을 볼 수 없으며 EventStore를 사용할 때 실패를 다시 시도 할 커밋 플래그가 있다는 것을 알고 있습니다.

내 질문에 오류를 처리하기 위해 EventStore 이외에 다른 작업을 수행해야합니까?

하나의 거래에서 모든 것을 처리하고 이제는 별도로 처리되는 세상에서 나올 때 걱정됩니다.

답변

1

물론 읽은 모델에서 게시 된 이벤트가 실패 할 수 있습니다.

당신이 그것을 감지하고 해결할 수 있는지 확인해야합니다.

좋은 점은 모든 이벤트를 반복해서 재생할 수 있기 때문에 오류를 수정할 수있는 기회가 있다는 것입니다. 원하는 경우 모든 단일 이벤트를 재생하여 수정 사항을 테스트 할 수도 있습니다.

오류 대기열을 사용할 수있는 게시 메커니즘으로 NServiceBus를 사용합니다. 오류 대기열과 함께 다른 로깅 도구를 사용하면 오류 로그와 오류가 처음 발생한 실제 메시지가 있기 때문에 어떤 일이 발생했는지 쉽게 판단 할 수 있습니다.

+0

읽은 모델과 이벤트 저장소가 동일한 시스템에 있습니다. NServiceBus를 사용하는 것이 과잉일까요 아니면 지금 계획을 세워야합니까? 또한 앱에 어떤 종류의 버그가 없다면 무엇이 읽기 모델에서 이벤트를 실패시킬 수 있습니까? 오류 대기열과 관련된 작업이 구현되도록 (NServiceBus에서 경험이 없음을 고려하면) 오류 대기열 및 관련 작업에 대해 자세히 알려주실 수 있습니까? –

+1

NServiceBus (및 전송으로 MSMQ)를 사용할 때 메시지가 지속된다는 것입니다. 즉, 어떤 이유로 든 예외가 발생하면 실제 메시지가 전송 될 때이를 볼 수 있습니다. 또한 다시 입력 대기열에 놓고 다시 실행할 수 있습니다. 또한 NServiceBus는 메시지 보내기 및 게시를 설정하는 아주 간단한 방법을 제공합니다. 어느 쪽이든 시작하는 것이 그리 까다로운 일은 아닙니다. 샘플을 보시고 샘플을보십시오. –

관련 문제