【问题标题】:How to configure different batch sizes for different queues in "webjobs v3"?如何为“webjobs v3”中的不同队列配置不同的批处理大小?
【发布时间】:2019-06-12 10:17:26
【问题描述】:

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

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

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

【问题讨论】:

  • 我可以看到的签名没有任何变化。升级 v3 时,您在使用 a.BatchSize = 1; 时遇到问题吗?

标签: azure-webjobs azure-webjobssdk queuetrigger


【解决方案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>();
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-15
    • 2018-12-27
    • 1970-01-01
    • 2021-10-25
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多