2016-11-21 2 views
0

MassTransit을 사용하고 Azure Service Bus를 전송으로 사용하여 소비자를 작성했습니다.소비자 종료시 어떻게됩니까? (MassTransit)

public async Task Consume(ConsumeContext<ISimpleRequest> context) 
{ 
    try 
    { 
     _log.InfoFormat("Strated working on {0}", context.Message.CustomerId); 
     Thread.Sleep(500); 
     _log.InfoFormat("Returning name for {0}", context.Message.CustomerId); 
    } 
    catch(Exception ex) 
    { 
     await context.Redeliver(TimeSpan.FromSeconds(1)); 
    } 
} 

예외가 발생하면 다른 사용자에게 메시지를 다시 전송합니다.
그러나 버스가 메시지를 보내면 소비자가 작업을 시작하고 프로세스가 종료됩니다. 어떻게 메시지를 잃을 수 있습니까? google group에서

+0

http://docs.masstransit-project.com/en/latest/usage/exceptions.html – stuartd

+0

오류는 무엇을 의미합니까? –

+0

실패한 메시지가 오류 대기열에 저장 됨 - _ "기본 버스 구성에서 예외가 잡히고 ... 메시지가 _error 대기열 (수신 엔드 포인트 대기열 이름 앞에 있음)로 이동합니다. 예외 세부 사항은 다음과 같은 헤더로 저장됩니다. 분석 및 예외 문제 해결을 돕기위한 메시지 "_. 또한 오류 대기열을 검사하지 않고 오류 메시지를 사용하여 오류에 대한 알림을 얻을 수도 있습니다. – stuartd

답변

0

답변 :

메시지는 소비자가 작업을 완료 한 후에 만 ​​전송로 (애크) 확인된다. 따라서 미완성 소비자의 경우 응용 프로그램 중지 또는 소비자 예외가 발생하면 메시지는 대기열에 남아 있습니다. 응용 프로그램을 종료하기 전에 busHandle을 실행하기 전에 busHandle을 요청하면 현재 처리중인 모든 메시지가 파이프 라인을 통해 실행될 때까지 대기 한 후 버스를 중지 할 수 있기 때문에 적절한 종단 처리에 대해서는 다릅니다.

관련 문제