Azure WebJobs — добавить триггер без атрибута?

#azure-webjobs

#azure-webjobs

Вопрос:

Я создаю непрерывное задание, которое прослушивает сообщения очереди Azure. Используя документацию, у меня есть что-то вроде этого:

 static async Task Main()
{
    var builder = new HostBuilder();
    builder.UseEnvironment("development");
    builder.ConfigureWebJobs(b =>
    {
        b.AddAzureStorageCoreServices();
    });
    var host = builder.Build();
    using (host)
    {
        await host.RunAsync();
    }
}

public static void Run(
    [QueueTrigger("myqueue-items")] string myQueueItem,
    ILogger log)
{
    ...
}
  

Я не поклонник атрибута magic QueueTrigger , найденного во время выполнения. Можно ли добавить функцию запуска вручную? Я представляю себе что-то вроде:

 static async Task Main()
{
    var builder = new HostBuilder();
    builder.UseEnvironment("development");
    builder.ConfigureWebJobs(b =>
    {
        b.AddAzureStorageCoreServices();
        b.AddQueueListener("myqueue-items", Run); // no magic attributes, compiler error if Run function is deleted 
    });
    var host = builder.Build();
    using (host)
    {
        await host.RunAsync();
    }
}

public static void Run(
    string myQueueItem,
    ILogger log)
{
    ...
}
  

Ответ №1:

Да, вы можете использовать ручные триггеры, вам не нужно использовать QueueTrigger атрибут, но, как описано в документе: чтобы запустить функцию вручную, используйте NoAutomaticTrigger атрибут.

Поэтому, я думаю, используете ли вы автоматические триггеры или ручные триггеры, вы должны добавить триггер с атрибутами, что необходимо!