假设以下是典型的队列触发器函数:
public void Run([QueueTrigger("queue1")]object data, ILogger log)
{
// Do something with data
}我的问题是,"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);
}这样,我就可以编写自己的类,这些类继承自QueueBase,但甚至可以驻留在不具有Microsoft.Azure.WebJobs依赖关系的库中:
public class MyQueueHandler : QueueBase<MyModel>
{
public void OnRunExecuted(MyModel data) => ...;
}但是不可能传入一个队列名..。是吗?
发布于 2020-07-07 10:14:43
请参阅绑定表达式
简而言之,您可以将变量队列名传递为“%队列-名称-变量%”。
[FunctionName("QueueTrigger")]
public static void Run(
[QueueTrigger("%queue-name-variable%")]string myQueueItem,
ILogger log)
{
log.LogInformation($"C# Queue trigger function processed: {myQueueItem}");
}在您的配置中定义了input-queue-name,如
{"queue-name-variable": "queue-name-in-current-env"}发布于 2019-11-27 16:51:53
我记得属性QueueTrigger只接受const字符串,因此您可以尝试使用环境变量(如post 如何传递动态队列名中的环境变量)来制作一些技巧。
https://stackoverflow.com/questions/59074815
复制相似问题