这篇文章 提供了一个如何在手动配置端点时这样做的例子。
就像这样。
cfg.ReceiveEndpoint("input-queue", ec =>
{
ec.DiscardFaultedMessages();
});
但我有很多消费者 我不想手动配置每个消费者 所以我用了一些方法... AddConsumers
和 ConfigureEndpoints
. 像这样。
services.AddMassTransit(cfg =>
{
cfg.AddConsumers(Assembly.GetExecutingAssembly());
cfg.AddBus(sp => Bus.Factory.CreateUsingRabbitMq(x => x.ConfigureEndpoints(sp)));
});
如果我另外调用 ReceiveEndPoint
方法(在调用 ConfigureEndpoints
),会抛出 "已经添加了一个具有相同密钥的接收端点 "的异常。
有没有办法在使用ConfigureEndpoints方法时配置一个特定的端点?
当使用 ConfigureEndpoints
、消费者、传奇和活动都会自动配置在接收端点上。要为特定的消费者配置接收端点,请在接收端点上创建一个 消费者定义. 如果扫描消费者的装配体,也会发现匹配的消费者定义。
public class SubmitOrderConsumerDefinition :
ConsumerDefinition<SubmitOrderConsumer>
{
protected override void ConfigureConsumer(IReceiveEndpointConfigurator endpointConfigurator,
IConsumerConfigurator<SubmitOrderConsumer> consumerConfigurator)
{
endpointConfigurator.DiscardFaultedMessage();
}
}