Azure WebJobs - 添加没有属性的触发器?

Azure WebJobs - add trigger without attribute?

我正在构建一个连续作业来侦听 Azure 队列消息。使用 documentation 我有这样的东西:

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)
{
    ...
}

我不喜欢在运行时发现的魔法 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)
{
    ...
}

是的,您可以使用手动触发器,不需要使用 QueueTrigger 属性,但是,如 document 中所述:要手动触发函数,使用 NoAutomaticTrigger 属性。

所以我觉得不管你是用自动触发器还是手动触发器,都必须加一个带属性的触发器,这是必须的!