Как установить MaxDequeueCount на уровне очереди

У меня есть веб-задание Azure, прослушивающее несколько очередей...

Я могу указать MaxDequeueCount на уровне задания...

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

Как лучше всего установить MaxDequeueCounts на уровне очереди? Я знаю, что могу получить фактический счетчик удаления из очереди и отправить его в очередь отравления «вручную», но мне было интересно, можно ли это сделать лучше...


person pmeyer    schedule 05.06.2017    source источник


Ответы (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);
person Amor    schedule 06.06.2017