如何为"webjobs v3"中的不同队列配置不同的批量大小?
How to configure different batch sizes for different queues in "webjobs v3"?
有一些文档介绍如何使用 .net 框架在 webjobs v2 中使用 customQueueProcessor 为不同的队列配置不同的批量大小。我想知道这在 webjobs v3 中是如何处理的?
var builder = new HostBuilder()
.UseEnvironment("Development")
.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddAzureStorage(a =>
{
a.BatchSize = 1;
});
})
此批量大小适用于代码中的所有 QueueTriggers。如何为不同的队列使用自定义值?
如果你想为每个队列设置 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>();
});
有一些文档介绍如何使用 .net 框架在 webjobs v2 中使用 customQueueProcessor 为不同的队列配置不同的批量大小。我想知道这在 webjobs v3 中是如何处理的?
var builder = new HostBuilder()
.UseEnvironment("Development")
.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddAzureStorage(a =>
{
a.BatchSize = 1;
});
})
此批量大小适用于代码中的所有 QueueTriggers。如何为不同的队列使用自定义值?
如果你想为每个队列设置 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>();
});