Как настроить разные размеры пакетов для разных очередей в "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>();
});