2012-03-20 5 views
2

JOliver EventStore 3.0과 NServiceBus의 명령 수신을 사용하여 동시성 예외를 처리하는 적절한 방법은 무엇입니까? 두 개 이상의 작업자 스레드가있는 경우 이는 일반적으로 발생할 수 있습니다.EventStore에서 동시성 예외를 처리하는 적절한 방법은 무엇입니까?

옵션 1

try 
{ 
    // store the event 
    ... 
} 
catch (ConcurrencyException) 
{ 
    _bus.HandleCurrentMessageLater(); 
} 

옵션

2는 NServiceBus 다시 던져 및 설정에서 MsMqTransportConfig.MaxRetries 옵션을 시도하자.

옵션 3

뭔가 내가 생각 아니에요?

답변

3

커밋되지 않은 이벤트를 커밋 된 이벤트와 비교하여 실제로 충돌하는지 (비즈니스 규칙에 따라) 확인할 수 있습니다. 충돌이없는 경우 이벤트가 지속되도록 허용하거나 다시 throw 할 수 있습니다.

일반적으로 나는 그냥 던져서 NServiceBus 재 시도를시키지 만.

+0

확인. 의견을 보내 주셔서 감사합니다. –

+0

이벤트 핸들러가 이벤트 저장소에 저장해야하는 경우 명령 핸들러가 재 시도 할 수있는 것입니까? 또는 전체 명령 처리가 트랜잭션을 던지고 되돌려 야합니까? –

관련 문제