0Pricing
C# Academy · 강의

오류 처리와 재시도

재시도와 배달 불가 큐로 장애를 처리합니다.

오류 처리와 재시도은(는) CoddyKit의 무료 C# Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C# Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

실패는 정상입니다

소비자는 일시적인 데이터베이스 오류, 하위 시스템의 시간 제한, 잘못된 데이터로 인한 버그 등으로 실패할 수 있습니다. MassTransit는 재시도, 재전달, 오류 큐와 같은 계층화된 도구를 제공하므로 메시지를 잃지 않고도 실패를 우아하게 처리할 수 있습니다.

즉시 재시도

짧은 일시적 장애에는 재시도를 구성하십시오. 그러면 MassTransit가 포기하기 전에 짧은 간격으로 메시지를 몇 차례 다시 처리합니다.

cfg.ReceiveEndpoint("orders", e =>
{
    e.UseMessageRetry(r => r.Immediate(3));
    e.ConfigureConsumer<OrderConsumer>(context);
});

간격 및 지수 재시도

재시도 사이에 간격을 두면 복구에 더 오랜 시간이 걸리는 상황에 도움이 됩니다. 폴리와 비슷하게 간격 또는 지수 백오프를 사용하십시오.

e.UseMessageRetry(r =>
    r.Exponential(5,
        minInterval: TimeSpan.FromSeconds(1),
        maxInterval: TimeSpan.FromMinutes(1),
        intervalDelta: TimeSpan.FromSeconds(2)));

재시도할 오류 필터링

일시적인 예외만 재시도하고, 유효성 검사 실패와 같은 영구적인 오류는 재시도하지 마십시오. Handle과 Ignore를 사용하여 재시도 범위를 설정합니다.

e.UseMessageRetry(r =>
{
    r.Handle<TimeoutException>();
    r.Ignore<ValidationException>();
    r.Immediate(3);
});

재시도와 재전달 비교

재시도는 메시지를 메모리에 유지하면서 빠르게 다시 처리합니다. 재전달(지연 재시도 또는 2차 재시도)은 메시지를 브로커로 돌려보내 훨씬 나중에 다시 전달하도록 하며, 그동안 소비자를 해방합니다.

e.UseDelayedRedelivery(r =>
    r.Intervals(TimeSpan.FromMinutes(5),
                TimeSpan.FromMinutes(15),
                TimeSpan.FromMinutes(30)));

두 계층 결합

안정적인 구성에서는 짧은 장애에 즉시 재시도를 사용하고, 장기적인 장애에는 지연된 재전달을 사용합니다. 재전달을 재시도 바깥에 구성하면 각 재전달 시도에도 자체적인 즉시 재시도가 적용됩니다.

e.UseDelayedRedelivery(r => r.Intervals(
    TimeSpan.FromMinutes(5), TimeSpan.FromMinutes(15)));
e.UseMessageRetry(r => r.Immediate(3));

오류 큐

모든 재시도와 재전달이 소진되면 MassTransit는 메시지를 오류 큐(이름은 <queue>_error)로 이동합니다. 메시지는 조사를 위해 예외 세부 정보와 함께 보존되며, 절대로 조용히 삭제되지 않습니다.

오류 이벤트

실패하면 MassTransit는 Fault<T> 이벤트도 게시합니다. 다른 서비스는 오류를 소비하여 알림을 보내거나 기록하거나 보상 작업을 시작할 수 있습니다.

public class OrderFaultConsumer : IConsumer<Fault<OrderPlaced>>
{
    public Task Consume(ConsumeContext<Fault<OrderPlaced>> context)
    {
        // inspect context.Message.Exceptions
        return Task.CompletedTask;
    }
}

멱등성이 중요합니다

재시도와 재전달로 메시지가 두 번 이상 처리될 수 있으므로 소비자는 멱등성을 갖춰야 합니다. 같은 메시지를 두 번 처리해도 이중 청구나 중복 작업이 발생해서는 안 됩니다. 고유 식별자와 중복 제거 검사를 사용하십시오.

오류 큐에서 재생

버그를 수정한 후 오류 큐의 메시지를 원래 큐로 이동하여 다시 처리할 수 있습니다. 이를 통해 이전에 실패한 작업을 복구할 수 있습니다.

배달 불가 큐와 건너뛴 큐

MassTransit는 어떤 소비자도 처리하지 않은 메시지를 위한 건너뛴 큐(_skipped)도 사용합니다. 이를 통해 운영 환경에서 잘못 라우팅되었거나 예상하지 못한 메시지 형식을 쉽게 발견할 수 있습니다.

빠른 확인

오류 처리와 재시도를 테스트하십시오.

요약

MassTransit는 실패 처리를 계층화합니다. 짧은 장애에는 재시도(즉시 또는 지수 방식이며 Handle/Ignore로 범위 설정), 장기적인 장애에는 재전달, 처리가 모두 소진된 메시지에는 오류 큐를 사용하며 알림을 위해 Fault<T> 이벤트도 게시합니다. 메시지가 두 번 이상 처리될 수 있으므로 소비자는 멱등성을 갖춰야 하며, 버그를 수정한 후 오류 큐에서 메시지를 다시 재생하십시오.

자주 묻는 질문

“오류 처리와 재시도” 강의는 무료인가요?

네 — “오류 처리와 재시도” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C# Academy 강의 전체를 잠금 해제할 수 있습니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“오류 처리와 재시도”에서 뭘 배우나요?

재시도와 배달 불가 큐로 장애를 처리합니다. 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

C# Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 C# Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“오류 처리와 재시도” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 C# Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 C# Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 메시징 개념
  2. 메시지 생성 및 소비
  3. 사가와 워크플로
  4. 오류 처리와 재시도
← C# Academy(으)로 돌아가기