c# - 如何在队列级别设置 MaxDequeueCount

标签 c# azure azure-webjobs azure-webjobssdk

我有一个 Azure WebJob 正在监听多个队列...

我可以在作业级别指定 MaxDequeueCount...

    config.UseTimers();
    config.Queues.BatchSize = 32;
    config.Queues.MaxDequeueCount = 6;

在队列级别设置 MaxDequeueCounts 的最佳方法是什么?我知道我可以获取实际的出列计数并将其“手动”发送到有毒队列,但我想知道是否可以通过更好的方式来完成...

最佳答案

如果你想为不同的队列触发函数设置不同的配置,你可以实现自己的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);

关于c# - 如何在队列级别设置 MaxDequeueCount,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44378885/

相关文章:

c# - 如何判断 EF4 实体是新记录还是现有记录?

c# - 直接读取和写入解锁位图非托管内存(Scan0)

http - Azure blob 文件下载链接

azure - 如何在AKS集群中创建Windows节点池?

.net - 使用 MSBuild 和 CSPack 任务打包 Azure 角色

powershell - 使用 PowerShell 创建计划的 Azure WebJob

c# - 有没有办法在 C# 中切换 boolean 变量?

c# - 使用 .NET 开发新的应用程序?

Azure WebJob 不接受有效的(?)CRON 表达式

azure - 在不同日期和不同时间设置 Cron 表达式