繁体   English   中英

MassTransit新使用者(和di范围)用于预取计数> 1的每条消息

[英]MassTransit new consumer (and di scope) for every message with prefetchcount > 1

我正在尝试使用MassTransit.ExtensionsDependencyInjectionIntegration进行设置,并尝试使用PrefetchCount。 我注意到对于多个消息,有时会使用同一使用者。

有什么方法可以迫使大众运输为每条消息创建消费者?

我的服务逻辑需要为每条消息提供新的范围,据我所知,只有每次我们都创建使用者时,才有可能。

UPD

我正在使用此库注册消费者和发布者。

在这里,您可以看到它向TryAddTrancient()注册了使用者。 这可能是个问题吗? 我仍然认为容器应该可以满足每个需求。

似乎这不是故意的行为,我将更深入地研究我的问题。

我建议使用使用的MassTransit.AspNetCore软件包

请仔细阅读文档 ,其中包括示例。

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // Add framework services
        services.AddHealthChecks();

        services.AddMvc();

        // Register your consumers if the need dependencies
        services.AddScoped<SomeDependency>()
        services.AddScoped<OrderConsumer>();

        // Register MassTransit
        services.AddMassTransit(
            provider => Bus.Factory.CreateUsingRabbitMq(cfg =>
            {
                var host = cfg.Host("localhost", host => 
                { 
                    host.Username("guest");
                    host.Password("guest");
                });

                cfg.ReceiveEndpoint(host, "submit-order", ep =>
                {
                    ep.PrefetchCount = 16;
                    ep.UseMessageRetry(x => x.Interval(2, 100));

                    ep.Consumer<OrderConsumer>(provider);
                });
            }),
            x => x.AddConsumer<OrderConsumer>());
    }

    // everything else
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM