在 MassTransit 中使用 ConfigureEndpoints 方法时如何丢弃错误消息?

How to discard faulted messages when using the ConfigureEndpoints method in MassTransit?

This article 提供了一个示例,说明如何在手动配置端点时执行此操作。

就像这样:

cfg.ReceiveEndpoint("input-queue", ec =>
{
    ec.DiscardFaultedMessages();
});

但我有很多消费者,我不想手动配置每个消费者,所以我使用方法 AddConsumersConfigureEndpoints
像这样:

    services.AddMassTransit(cfg =>
        {
            cfg.AddConsumers(Assembly.GetExecutingAssembly());
            cfg.AddBus(sp => Bus.Factory.CreateUsingRabbitMq(x => x.ConfigureEndpoints(sp)));
        });

如果我另外调用 ReceiveEndPoint 方法(在调用 ConfigureEndpoints 之前或之后),将抛出异常 "A receive endpoint with the same key was already added"。

有没有办法在使用 ConfigureEndpoints 方法时配置特定端点?

使用 ConfigureEndpoints 时,会自动在接收端点上配置消费者、传奇和活动。要为特定消费者配置接收端点,请创建 consumer definition。如果为消费者扫描程序集,也会发现匹配的消费者定义。

public class SubmitOrderConsumerDefinition :
    ConsumerDefinition<SubmitOrderConsumer>
{
    protected override void ConfigureConsumer(IReceiveEndpointConfigurator endpointConfigurator,
        IConsumerConfigurator<SubmitOrderConsumer> consumerConfigurator)
    {        
        endpointConfigurator.DiscardFaultedMessage();
    }
}