Masstransit request/response 未命中故障消费者

Masstransit request/response does not hit the Fault consumer

已经有人问过类似的问题

这是我的请求者代码

            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();

我注意到,如果消费者发生任何错误,它永远不会影响我的故障消费者。

另一方面,如果我通过 ISendEndPoint 发送消息(如下面的代码所示),故障消费者工作正常。

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

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

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

没有任何设置缺失,这就是它的工作原理。