0

편집 :이 질문에 대한 답변으로 Azure 구성 관련 변경 사항을 적용합니다.WebJob ServiceBusTrigger 재시도 정책을 구성하는 방법


제 3 자 서비스를 일시적으로 사용할 수 없을 때 즉시 다시 시도하지 못하도록 재시도 정책을 설정하려고합니다.

현재 작업이 여러 번 즉시 시도되고 타사 서비스가 일시적으로 중단되어 실패합니다.

어떻게 이러한 메시지에 대한 재시도 지연을 설정합니까? 내가 제대로 오류를 기록 ErrorMonitor 설정이

class Program 
{ 
    static void Main() 
    { 
     var config = new JobHostConfiguration(); 

     if (config.IsDevelopment) 
      config.UseDevelopmentSettings(); 

     config.UseCore(); 
     config.UseServiceBus(new ServiceBusConfiguration() 
     { 
      ConnectionString = Configuration.GetAppSetting("Microsoft.ServiceBus.ConnectionString"), 
      MessageOptions = new OnMessageOptions() 
      { 

      } 
     }); 

     var host = new JobHost(config); 

     LogManager.GetCurrentClassLogger().Information("F1.Birst.Automation web job starting."); 
     // The following code ensures that the WebJob will be running continuously 
     host.RunAndBlock(); 
    } 
} 

:

나는 홈페이지에 다음 코드를

public class ExceptionHandler 
{ 
    private static readonly ILogger Log = LogManager.GetCurrentClassLogger(); 

    public void Handle([ErrorTrigger] TraceFilter message, TextWriter log) 
    { 
     foreach (var exception in message.GetEvents()) 
      Log.Error(exception.Exception.InnerException, exception.Message); 
    } 
} 

그리고 내 메시지 핸들러는 다음과 같습니다

public class ChurchCodeChangedEventHandler : ChurchSpaceHandler 
{ 
    private static readonly ILogger Log = LogManager.GetCurrentClassLogger(); 

    public void Handle([ServiceBusTrigger(nameof(ChurchCodeChangedEvent), "F1.Birst.Automation.ChurchCodeChangedEvent")] ChurchCodeChangedEvent message, TextWriter log) 
    { 
     Log.Information(LogTemplates.ChurchCodeChanged, message.ChurchId); 

     // snip 
    } 
} 

답변

1

어떻게 이러한 메시지의 재시도 지연을 설정합니까?

Webjobs는 지연된 재 시도의 개념을 지원하지 않습니다. ServiceBusConfiguration을 사용하여 몇 가지 사항 만 제어 할 수 있지만 다시 시도하는 경우는 source code이 아닙니다.

NServiceBus 또는 MassTransit과 같은 프레임 워크를 사용하면 지연된 재시도 횟수를 얻을 수 있습니다. NServiceBus with WebJobs을 사용하는 방법에 대한 예가 있으며 로컬에서 실행하여 지연된 재시도가 어떻게 작동하는지 확인할 수 있습니다.

+0

나는 전에 NServiceBus를 사용해 왔고 그것을 좋아합니다. 불행히도 현재 옵션이 아닙니다. 마이크로 소프트 연락처와 대화하면서, 문서화되지 않은 해결책이 있기를 바란다. –

+0

문서화되지 않은 솔루션에 의존하고 싶지는 않습니다. 제품 그룹은 결코 그런 것을 제공하지 않습니다. 그리고 솔루션 아키텍트 (Solutions Architect)에서 얻은 것이라면 질문하십시오. 정확한 기능에 대한 기본 지원이 없으면 직접 구현하거나 다른 용도로 사용해야합니다. 마술이 없다. –