将 ConnectReceiveEndpoint 与 MassTransit 一起使用时如何设置 PrefetchCount?

How to set PrefetchCount when using ConnectReceiveEndpoint with MassTransit?

默认情况下,MassTransit 将 PrefetchCount 设置为 16。我想更改它。我可以在配置 MassTransit 时执行此操作。但是当使用 ConnectReceiveEndpoint 时,我无法设置 PrefetchCount。 如果我设置 PrefetchCount 进行配置,那么 MassTransit 将创建一些随机队列,这些队列正确地具有我定义的 PrefetchCount,但是使用 ConnectReceiveEndpoint 创建的队列仍然具有默认值 16。

有什么方法可以为使用 ConnectReceiveEndpoint 创建的队列设置 PrefetchCount?

    public async Task SubscribeAsync<T>(Func<T, Task> callback, string queueName) where T : class, IMessage
    {
        queueName ??= $"{Assembly.GetEntryAssembly().GetName().Name}_{Environment.MachineName}";

        hostHandler = busControl.ConnectReceiveEndpoint(queueName, cfg =>
        {
            cfg.Handler<T>(async context =>
            {
                return callback(context.Message);
            },
            config =>
            {
                config.UseConcurrentMessageLimit(10);
                config.UseMessageRetry(r => r.Exponential(3, TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(2)));
            });
        });

        await hostHandler.Ready;
    }

可以查看配置器的类型,合理使用:

if (cfg is IRabbitMqReceiveEndpointConfigurator rabbit)
    rabbit.PrefetchCount = 80;