Masstransit请求/响应未命中故障消费者



这里已经提出了类似类型的问题

这是我的请求者代码

var bus = Bus.Factory.CreateUsingAzureServiceBus(sbc => { sbc.Host(ServiceBusConnectionString); });
await bus.StartAsync();
IRequestClient<ScanRequest> client=
bus.CreateRequestClient<MyRequest>(new Uri("queue:" + QueueName), TimeSpan.FromSeconds(50));
var response = await client.GetResponse<MyRequestResponse>(scanRequest); //we should get the response here
await Task.Run(() => Console.ReadKey());
await bus.StopAsync();

我注意到,如果消费者出现任何错误,它永远不会影响到我的Fault消费者。

另一方面,如果我通过ISendEndPoint发送一条消息(如下面的代码所示(,则Fault使用者工作正常。

IServiceProvider serviceProvider = SetupServiceCollection();
var bus = serviceProvider.GetRequiredService<IBus>();
var endpoint = await bus.GetSendEndpoint(new Uri("queue:" + TopicName));
await endpoint.Send(myRequest);

消息类型和命名空间已正确配置。请求/响应模式是否缺少任何设置?

正如您链接的问题的答案中所解释的,当存在ResponseAddress(这是请求/响应所必需的(时,故障不会发布,而是直接发送到响应地址。该故障随后由请求客户端接收,并用于对原始请求Task抛出异常。

没有任何设置丢失,这只是它的工作方式。

最新更新