이 게시물은 2019년 5월 29일 11:16에 콩시다가 마지막으로 편집했습니다.
머리말 프로젝트에서는 통제할 수 없는 이유로 프로젝트 운영에 문제가 발생할 수 있습니다. 예를 들어, 서버 장애, 서비스 충돌, 네트워크 장애 등이 있습니다. 재시도 가능한 오류가 발생하면 Polly를 사용할 수 있습니다—— . .NET 탄성 및 일시적 결함 처리 라이브러리. 프로젝트 공식 웹사이트 주소 (하이퍼링크 로그인이 보입니다.)。 오늘 이 글에서는 폴리의 잘못된 재시도 전략을 기록할 것입니다.
환경 및 도구
>VS 2017
>윈도우 10 시스템
문자 메시지
1: 새로운 콘솔 애플리케이션을 생성합니다.
2: 폴리의 말을 인용하세요. NuGet 패키지에서 다운로드 가능
3: 코드를 붙여넣기
4: F6가 생성합니다. 그 다음 debug 폴더에서 생성된 .exe 파일을 찾아 > 더블 클릭으로 실행하세요.
출력 메시지는 다음과 같습니다: 세 번 재시도.
F5가 디버깅할 때도 이 방법이 세 번 반복된 것을 볼 수 있습니다.
폴리의 재도전 전략이 자세히 설명된다
1: 예외 유형
이 코드에서 :handle에는 재시도할 예외 타입이 포함되어 있습니다. 즉, 실행된 코드가 특정 예외를 생성할 때 재시도 함수가 실행됩니다. 그렇지 않으면 재시도가 이루어지지 않습니다. 일부 예외는 재시도가 필요 없기 때문입니다.
물론, 여기서 여러 가지 특정 예외 유형을 작성해 다시 시도할 수 있습니다.
여기서 DivideByZeroException은 0으로 나누려는 예외를 나타냅니다. SqlException은 SQL Server가 오류나 경고를 반환할 때 발생하는 예외를 의미합니다. 예를 들어, 데이터베이스 연결 장애, SQL 실행 오류 등이 있습니다. SmtpException는 우편 서비스가 제기한 예외를 나타냅니다. 예를 들어, 전송이 실패했고, 네트워크 연결이 끊겼으며, 이메일 계정 정보가 비정상적이었습니다.
구체적인 예외 유형에 대해서는 마이크로소프트 공식 문서를 참조해 주십시오:
2: 재시도 유형
1) 첫 번째 유형의 재시도는 직접 주어진 재시도 횟수입니다. 다음 코드는 단 3번만 재시도됩니다.
재시도할 때마다 각 재시도에서 수행된 관련 행동을 호출할 수 있습니다. 다음 코드는 또 다른 의뢰 작품입니다. 재시도를 수행할 때는 재시도 횟수와 예외 발생 이유가 출력됩니다.
또한 성공할 때까지 코드를 계속 재시도할 수도 있습니다.
2) 두 번째 유형의 재시도는 간격을 두고 재시도하는 것입니다. 다음 코드는 2초, 7초 또는 10초마다 재시도를 의미합니다. 10초로 다시 시도하세요. 실행이 실패하면 재시도를 종료합니다.
또한 재시도가 성공할 때까지 간격을 두고 다시 시도할 수도 있습니다. 이를 위해서는 함수 계산이 필요합니다.
위 코드는 간접 2의 멱 재시도를 의미합니다. 예를 들어, 실행이 실패하면 첫 번째는 2초 간격으로, 두 번째는 4초 간격으로, 세 번째는 8초 간격으로 재시도합니다......... 등등. 처형이 성공할 때까지.
에필로그
참고: 위 코드 핸들의 예외 유형은 실제 프로젝트 상황에 맞게 작성되어야 합니다. 모든 예외가 재시도를 요구하는 것은 아닙니다.
예외 타입은 모든 예외의 기본 클래스입니다. 이 내용을 손잡이에 적지 않는 것이 좋습니다. 그렇지 않으면 매우 심각한 결과를 초래할 수 있습니다.
|