【问题标题】:How to set the MaxDequeueCount at the Queue Level如何在队列级别设置 MaxDequeueCount
【发布时间】:2017-06-05 22:51:30
【问题描述】:
我有一个 Azure WebJob 监听多个队列...
我可以在作业级别指定 MaxDequeueCount...
config.UseTimers();
config.Queues.BatchSize = 32;
config.Queues.MaxDequeueCount = 6;
在队列级别设置 MaxDequeueCounts 的最佳方法是什么?我知道我可以获取实际的出队计数并将其“手动”发送到毒队列,但我想知道这是否可以以更好的方式完成......
【问题讨论】:
标签:
c#
azure
azure-webjobs
azure-webjobssdk
【解决方案1】:
如果你想为不同的队列触发函数设置不同的配置,你可以实现自己的QueueProcessorFactory,并根据队列名称重置上下文的一些配置。
public class MyQueueProcessorFactory : IQueueProcessorFactory
{
public QueueProcessor Create(QueueProcessorFactoryContext context)
{
if (context == null)
{
throw new ArgumentNullException("context");
}
if (context.Queue.Name == "queue1")
{
context.MaxDequeueCount = 2;
}
else if (context.Queue.Name == "queue2")
{
context.MaxDequeueCount = 4;
}
return new QueueProcessor(context);
}
}
要使用自定义的 QueueProcessorFactory,我们需要如下设置 QueueProcessorFactory 属性。
JobHostConfiguration config = new JobHostConfiguration();
config.Queues.QueueProcessorFactory = new MyQueueProcessorFactory();
JobHost host = new JobHost(config);