gpt4 book ai didi

c# - 不能同时使用 Bind 和 ConfigureConsumer

转载 作者:行者123 更新时间:2023-12-04 02:38:26 24 4
gpt4 key购买 nike

我在 Asp.Net Core 应用程序中使用 MassTransit + RabbitMQ 组合。相关配置部分如下:

public IBusControl CreateBus(IServiceProvider serviceProvider)
{
var options = serviceProvider.GetService<IConfiguration>().GetOptions<RabbitMqOptions>("rabbitmq");

return Bus.Factory.CreateUsingRabbitMq(cfg =>
{
cfg.Host($"rabbitmq://{options.Host}:{options.Port}");
cfg.ReceiveEndpoint("ingest-products", ep =>
{
ep.PrefetchCount = 16;

ep.UseMessageRetry(r => r.Interval(2, 1000));
ep.Bind<CreateProducts>(x =>
{
x.RoutingKey = "marketplace";
x.ExchangeType = ExchangeType.Direct;
x.AutoDelete = false;
x.Durable = true;
});

ep.ConfigureConsumer<CreateProductsConsumer>(serviceProvider);
});
});
}

当我运行应用程序时,出现以下异常:

ArgumentException: The MassTransit.RabbitMqTransport.Topology.Entities.ExchangeEntity entity settings did not match the existing entity

我在这里做错了什么?在将交换绑定(bind)到接收端点后,我不应该使用 IServiceProvider 配置消费者吗?如果没有,那么我该如何正确配置它(好吧,我仍然希望将东西注入(inject)我的消费者)?

最佳答案

如果您将消息类型绑定(bind)到与消费者中的消息类型相同的接收端点,则需要禁用自动交换绑定(bind)。

// for MassTransit versions v6 and earlier
endpoint.BindMessageExchanges = false;

// for MassTransit versions 7 and onward
endpoint.ConfigureConsumeTopology = false;

这将阻止 MassTransit 尝试在端点上绑定(bind)消费者的消息类型。

关于c# - 不能同时使用 Bind 和 ConfigureConsumer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60542962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com