【问题标题】: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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-02
      • 2012-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-11
      相关资源
      最近更新 更多