이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 22130|회답: 3

[프레임] . .NET 복원력 및 일시적 실패 처리 폴리 재시도 전략

[링크 복사]
게시됨 2019. 5. 28. 오후 11:54:53 | | | |
이 게시물은 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초 간격으로 재시도합니다......... 등등. 처형이 성공할 때까지.



에필로그


참고: 위 코드 핸들의 예외 유형은 실제 프로젝트 상황에 맞게 작성되어야 합니다. 모든 예외가 재시도를 요구하는 것은 아닙니다.

예외 타입은 모든 예외의 기본 클래스입니다. 이 내용을 손잡이에 적지 않는 것이 좋습니다. 그렇지 않으면 매우 심각한 결과를 초래할 수 있습니다.














이전의:. Net Integration의 PayPal IPN 반환 값은 항상 유효하지 않았습니다
다음:C# yield 키워드의 사용
게시됨 2019. 5. 29. 오전 9:17:54 |
저는 AOP에서 직접 재시도 메커니즘을 구현했고, 결국 Polly 라이브러리가 제 요구를 충족할 수 있다는 것을 알게 되었지만, 제 기능은 구현되어 있고, 제가 참조하는 서드파티 라이브러리는 쓸모없는 코드가 있을 수 있어서 시스템을 최적화할 수 없어 당분간은 쓸모가 없습니다.

첨부된 코드는 다음과 같습니다:



시간 나면 폴리도 알아볼게요
게시됨 2019. 5. 29. 오전 9:22:01 |
샤오자오자 2019-5-29 09:17에 게시됨
저는 aop에서 직접 재시도 메커니즘을 구현했고, 결국 폴리 라이브러리가 제 요구를 충족시킬 수 있다는 것을 알게 되었지만, 제 기능은 구현되었고, 소개는 ...

이런 작은 필요를 스스로 해결하는 데 아무 문제가 없습니다
그리고 다음번에 다시 시도할 때까지 기다려야 합니다
게시됨 2019. 5. 29. 오전 9:29:22 |
2019-5-29 09:22에 Winds 게시됨
이런 작은 필요를 스스로 해결하는 데 아무 문제가 없습니다
그리고 다음에 다시 시도할 때까지 기다려야 할까요?

아니요, 예외는 동시성, 데이터 삽입, 업데이트, 삭제 충돌로 인해 발생해야 하지만, 성공적으로 실행되는 예외가 반드시 있어야 한다고 ....... 누락된 코드는 트랜잭션을 랩 처리하며, 예외는 자동으로 롤백됩니다. 두 번째 재시도에서는 충돌이 사라져서 대기 시간을 설정하지 않았습니다.
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com