Как настроить разные размеры пакетов для разных очередей в "webjobs v3"?

Существует некоторая документация по настройке разных размеров пакетов для разных очередей с использованием customQueueProcessor в webjobs v2 с использованием.net framework. Я хотел бы знать, как это обрабатывается в webjobs v3?

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

Этот размер пакета применим для всех QueueTriggers в коде. Как использовать пользовательские значения для разных очередей?

0 ответов

Если вы хотите установить 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.

Зарегистрируйте CustomQueueProcessorFactory в своем методе ConfigureServices следующим образом:

builder.ConfigureServices((services) =>
{
    services.AddSingleton<IQueueProcessorFactory, CustomQueueProcessorFactory>();
});
Другие вопросы по тегам