WedX - журнал о программировании и компьютерных науках

IQueueProcessorFactory в Azure WebJobs 3.0?

В Azure WebJobs 2.0 для реализации экземпляра IQueueProcessorFactory мне нужно сделать что-то вроде этого:

_jobHostConfiguration = new JobHostConfiguration {
        StorageConnectionString = "XXX"
        DashboardConnectionString = "XXX"                
        };
_jobHostConfiguration.Queues.QueueProcessorFactory = new CustomQueueProcessorFactory();

Где CustomQueueProcessorFactory примерно так:

public class CustomQueueProcessorFactory: IQueueProcessorFactory
{
    public QueueProcessor Create(QueueProcessorFactoryContext context)
    {
        if (context == null) throw new ArgumentNullException(nameof(context));

        if (context.Queue.Name.Equals("queue_A") {
            context.BatchSize = 32; 
            context.NewBatchThreshold = 100;
        } 

        if (context.Queue.Name.Equals("queue_B")) {
            context.BatchSize = 2; 
        } 

        return new QueueProcessor(context);
    }        
}

У меня вопрос: как сделать то же самое с Azure WebJobs 3.0?

Я не могу найти ни одного образца.

29.08.2019

Ответы:


1

В Webjob 3.0 атрибут QueuesOptions в AddAzureStorage не имеет QueueProcessorFactory.

Таким образом, вы можете использовать builder.ConfigureServices(s => s.AddSingleton<IQueueProcessorFactory>(factory)); для ввода IQueueProcessorFactory. Пожалуйста, обратитесь к шагам, как показано ниже:

1.Программа.cs.

class Program
{
    static void Main(string[] args)
    {
        var builder = new HostBuilder();
        var factory = new CustomQueueProcessorFactory();
        builder.ConfigureWebJobs(b =>
        {
            b.AddAzureStorageCoreServices();
            b.AddAzureStorage();
        });
        builder.ConfigureServices(s => s.AddSingleton<IQueueProcessorFactory>(factory));
        builder.ConfigureAppConfiguration((context, config) =>
        {
            config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
        });
        var host = builder.Build();
        using (host)
        {
            host.Run();
        }
    }
}

public class CustomQueueProcessorFactory : IQueueProcessorFactory
{
    public QueueProcessor Create(QueueProcessorFactoryContext context)
    {
        if (context == null)
        {
            throw new ArgumentNullException(nameof(context));
        }
        if (context.Queue.Name.ToString() == "queue")
        {
            context.MaxDequeueCount = 10;
        }
        else if (context.Queue.Name.ToString() == "queue1")
        {
            context.MaxDequeueCount = 10;
            context.BatchSize = 1;
        }
        return new QueueProcessor(context);
    }
}

2.Функция.cs:

public static void ProcessQueueMessage([QueueTrigger("queue1")] string message, TextWriter log)
{
    log.WriteLine(message);
}
30.08.2019
Новые материалы

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


Для любых предложений по сайту: [email protected]