[有关使用.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>();
});