2017-04-15 2 views
0

나는 서비스 버스 푸른 하늘 소비자에게 예외를 관리하는 방법, 보낸 사람에게 경고하는 방법, 사가와 같은 패턴을 검색합니다. 이것이 올바른 목적입니다. 샘플 코드를 읽었을 때, 대개의 경우 소비자에게 예외가 있으면 보낸 사람이 경고하지 않습니다. 그러나 생산 환경에서 수동으로 해결하지 않기 위해이를 관리하는 방법.소비자 서비스 버스에서 메시지를 보낼 때 오류가 발생했을 때 오류를 관리하는 방법

배송 서비스에 "PaymentRequested"로 설정된 플래그가있는 경우 다른 서비스에 대한 지불을 요청하는 배송 서비스가 있지만 지불 서비스에 대한 실행이있는 경우에도 플래그는 여전히 " PaymentRequested "를 영원히 남겨 두었습니다. 이것을 피하는 방법.

답변

0

일반적으로 소비자는 명령 메시지를 성공적으로 처리 한 경우 성공적인 이벤트 메시지를 다시 보내야합니다. 그렇지 않으면 실패 이벤트 메시지를 보내야합니다. 그것이 작동이 성공했는지 여부를 보낸 사람이 알 수있는 방법입니다.

동시에 보낸 사람은 이러한 이벤트 메시지를 수신하는 시간 제한을 정의해야합니다. 예외가 발생하여 소비자가 추락 한 경우 제한 시간 내에 통보를받지 못합니다. 작업이 실패 (또는 다른 이유)하고 보낸 사람이 명령을 다시 보내고 (명령이 안전한 다시 시도를 위해 멱등환이어야 함) 또는 제한 시간으로 인해 실패를보고 할 수 있음을 의미 할 수 있습니다.

+0

간단한 샘플 코드가 있습니까? – ArDumez

+0

NServiceBus로 구현하지 않았습니다. 오히려 EventStore와 Akka.NET. 그러나 일반적으로 메시징 시스템에 대한 기본 접근 방식입니다. –

+0

Udi가 명령을 모델링하여 실패하지 않도록 제안합니다. –

관련 문제