来自请求客户端的公共交通不一致异常
Masstransit inconsistent exception from request client
我正在使用请求客户端向我的消费者发送同步请求,但在我的消费者中我抛出了一个异常。
我的代码如下所示
var client = Bus.CreateRequestClient<TRequest, TResponse>(uri, Timeout);
try
{
var response = await client.Request(request);
}
Catch(Exception e)
{
//log
}
问题是如果我快速连续地重复请求,有时我会在 RequestFaultException 中捕捉到消费者抛出的真正异常,有时我会捕捉到 MassTransit.RequestCanceledException。我确定它不是由超时引起的,因为它设置为很长的时间跨度(30 秒)。我做错了什么吗?
堆栈跟踪:
MassTransit.RequestCanceledException: The request was canceled, RequestId: 00240000-ac12-0242-0947-08d7b68e88f0 ---> System.OperationCanceledException: The operation was canceled.
at MassTransit.Internals.Extensions.TaskExtensions.WithCancellation(Task task, CancellationToken cancellationToken)
at MassTransit.RabbitMqTransport.Transport.RabbitMqSendTransport.SendPipe1.Send(ModelContext modelContext)
at MassTransit.RabbitMqTransport.Transport.RabbitMqSendTransport.SendPipe
1.Send(ModelContext modelContext)
at GreenPipes.Agents.PipeContextSupervisor1.GreenPipes.IPipeContextSource<TContext>.Send(IPipe
1 pipe, CancellationToken cancellationToken)
at GreenPipes.Agents.PipeContextSupervisor1.GreenPipes.IPipeContextSource<TContext>.Send(IPipe
1 pipe, CancellationToken cancellationToken)
at GreenPipes.Agents.PipeContextSupervisor1.GreenPipes.IPipeContextSource<TContext>.Send(IPipe
1 pipe, CancellationToken cancellationToken)
at MassTransit.Clients.SendRequestSendEndpoint1.Send(T message, IPipe
1 pipe, CancellationToken cancellationToken)
at MassTransit.Clients.ClientRequestHandle1.SendRequest()
--- End of inner exception stack trace ---
at MassTransit.Clients.ClientRequestHandle
1.SendRequest()
at MassTransit.Clients.ResponseHandlerConnectHandle1.GetTask()
at MassTransit.MessageRequestClient
2.Request(TRequest request, CancellationToken cancellationToken)
根据 Chris Patterson 的说法,我使用的是 5.5,此问题已在 v6.2 中修复。
我正在使用请求客户端向我的消费者发送同步请求,但在我的消费者中我抛出了一个异常。
我的代码如下所示
var client = Bus.CreateRequestClient<TRequest, TResponse>(uri, Timeout);
try
{
var response = await client.Request(request);
}
Catch(Exception e)
{
//log
}
问题是如果我快速连续地重复请求,有时我会在 RequestFaultException 中捕捉到消费者抛出的真正异常,有时我会捕捉到 MassTransit.RequestCanceledException。我确定它不是由超时引起的,因为它设置为很长的时间跨度(30 秒)。我做错了什么吗?
堆栈跟踪:
MassTransit.RequestCanceledException: The request was canceled, RequestId: 00240000-ac12-0242-0947-08d7b68e88f0 ---> System.OperationCanceledException: The operation was canceled. at MassTransit.Internals.Extensions.TaskExtensions.WithCancellation(Task task, CancellationToken cancellationToken) at MassTransit.RabbitMqTransport.Transport.RabbitMqSendTransport.SendPipe
1.Send(ModelContext modelContext) at MassTransit.RabbitMqTransport.Transport.RabbitMqSendTransport.SendPipe
1.Send(ModelContext modelContext) at GreenPipes.Agents.PipeContextSupervisor1.GreenPipes.IPipeContextSource<TContext>.Send(IPipe
1 pipe, CancellationToken cancellationToken) at GreenPipes.Agents.PipeContextSupervisor1.GreenPipes.IPipeContextSource<TContext>.Send(IPipe
1 pipe, CancellationToken cancellationToken) at GreenPipes.Agents.PipeContextSupervisor1.GreenPipes.IPipeContextSource<TContext>.Send(IPipe
1 pipe, CancellationToken cancellationToken) at MassTransit.Clients.SendRequestSendEndpoint1.Send(T message, IPipe
1 pipe, CancellationToken cancellationToken) at MassTransit.Clients.ClientRequestHandle1.SendRequest() --- End of inner exception stack trace --- at MassTransit.Clients.ClientRequestHandle
1.SendRequest() at MassTransit.Clients.ResponseHandlerConnectHandle1.GetTask() at MassTransit.MessageRequestClient
2.Request(TRequest request, CancellationToken cancellationToken)
根据 Chris Patterson 的说法,我使用的是 5.5,此问题已在 v6.2 中修复。