在MassTransit中使用ConfigureEndpoints方法时,如何丢弃故障消息?

问题描述 投票:0回答:1

这篇文章 提供了一个如何在手动配置端点时这样做的例子。

就像这样。

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),会抛出 "已经添加了一个具有相同密钥的接收端点 "的异常。

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

c# masstransit
1个回答
1
投票

当使用 ConfigureEndpoints、消费者、传奇和活动都会自动配置在接收端点上。要为特定的消费者配置接收端点,请在接收端点上创建一个 消费者定义. 如果扫描消费者的装配体,也会发现匹配的消费者定义。

public class SubmitOrderConsumerDefinition :
    ConsumerDefinition<SubmitOrderConsumer>
{
    protected override void ConfigureConsumer(IReceiveEndpointConfigurator endpointConfigurator,
        IConsumerConfigurator<SubmitOrderConsumer> consumerConfigurator)
    {        
        endpointConfigurator.DiscardFaultedMessage();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.