如何为“ webjobs v3”中的不同队列配置不同的批处理大小?

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

[有关使用.net框架在webjobs v2中使用customQueueProcessor为不同队列配置不同批处理大小的文档,我想知道在webjobs v3中如何处理?

       var builder = new HostBuilder()
            .UseEnvironment("Development")
            .ConfigureWebJobs(b =>
            {
                b.AddAzureStorageCoreServices();
                b.AddAzureStorage(a =>
                {
                    a.BatchSize = 1;
                });
            })

此批处理大小适用于代码中的所有QueueTriggers。如何为不同的队列使用自定义值?

azure-webjobs azure-webjobssdk queuetrigger
1个回答
1
投票

如果要为每个队列设置BatchSize,则可以实现IQueueProcessorFactory:

public class CustomQueueProcessorFactory : IQueueProcessorFactory
{
    public QueueProcessor Create(QueueProcessorFactoryContext context)
    {
        if (context.Queue.Name.Equals("fooqueue"))
        {
            // demonstrates how batch processing behavior can be customized
            // per queue (as opposed to the global settings that apply to ALL queues)
            context.BatchSize = 3;
            context.NewBatchThreshold = 4;
            ...
        }

        return new QueueProcessor(context);
    }
}

在这种情况下,所有队列将使用默认的BatchSize配置,但是队列触发器“ fooqueue”会将BatchSize设置为3。

以这种方式在您的ConfigureServices方法中注册CustomQueueProcessorFactory:

builder.ConfigureServices((services) =>
{
    services.AddSingleton<IQueueProcessorFactory, CustomQueueProcessorFactory>();
});
© www.soinside.com 2019 - 2024. All rights reserved.