요청/응답 패턴과 관련하여 MassTransit 3+에서 예외를 처리하는 가장 좋은 방법은 무엇입니까? docs here은 ResponseAddress가 메시지에 존재하면 오류 메시지가 해당 주소로 보내지지만 한 소비자는 해당 주소에서 메시지를 어떻게 받습니까? Bus.Request에 대한 ResponseAddress는 자동 생성 된 MassTransit 주소 인 것 같습니다. 따라서 주 소비자에게 던져진 예외에 액세스하는 방법을 알지 못합니다. 내가 뭘 놓치고 있니? 여기에 소비자와 오류 소비자 사용 유니티 컨테이너 등록하려면 코드입니다 :요청/응답에 대해 MassTransit 오류 소비자가 호출되지 않음
cfg.ReceiveEndpoint(host, "request_response_queue", e =>
{
e.Consumer<IConsumer<IRequestResponse>>(container);
e.Consumer(() => container.Resolve<IMessageFaultConsumer<IRequestResponse>>() as IConsumer<Fault<IRequestResponse>>);
});
는 그리고 여기에 글로벌 메시지 오류 소비자의 내 시도이다 : 나는 Bus.Publish를 사용할 때
public interface IMessageFaultConsumer<TMessage>
{
}
public class MessageFaultConsumer<TMessage> : IConsumer<Fault<TMessage>>, IMessageFaultConsumer<TMessage>
{
public Task Consume(ConsumeContext<Fault<TMessage>> context)
{
Console.WriteLine("MessageFaultConsumer");
return Task.FromResult(0);
}
}
이 방법은 작업을 수행 Bus.Request와는 대조적입니다. 또한 IConsumeObserver를 생성하고 전역 예외 로그 코드를 ConsumeFault 메서드에 넣는 방법을 살펴 보았습니다.하지만 다시 시도하기 전에 모든 예외가 호출되는 단점이 있습니다. 요청/응답에 대한 예외를 처리하는 적절한 방법은 무엇입니까?