具有变量名称、QueueTriggerAttribute 限制的 Azure Functions QueueTrigger

thm*_*shd 6 .net c# .net-core azure-functions

假设以下典型的队列触发函数:

public void Run([QueueTrigger("queue1")]object data, ILogger log)
{
    // Do something with data
}
Run Code Online (Sandbox Code Playgroud)

我的问题是它"queue1"必须是一个常量字段,因此必须在编译时定义它。另外,我想要一个队列触发器的基类,它可以像这样工作:

public abstract class QueueBase<TModel>
{
    public void Run([QueueTrigger("queueName")]TModel data, ILogger log)
    {
        // Do something with data, log something etc.
        OnRunExecuted(data);
        // Do something with data, log something etc.
    }

    public abstract void OnRunExecuted(TModel data);
}
Run Code Online (Sandbox Code Playgroud)

有了这个,我可以编写自己的类,这些类继承自QueueBase但甚至可以存在于没有Microsoft.Azure.WebJobs依赖项的库中:

public class MyQueueHandler : QueueBase<MyModel>
{
    public void OnRunExecuted(MyModel data) => ...;
}
Run Code Online (Sandbox Code Playgroud)

但不可能传递队列名称......是吗?

Iva*_*yuk 1

我记得属性QueueTrigger仅接受 const 字符串,因此您可以尝试使用环境变量进行一些技巧,例如如何传递动态队列名称