首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure函数QueueTrigger,变量名,QueueTriggerAttribute限制

Azure函数QueueTrigger,变量名,QueueTriggerAttribute限制
EN

Stack Overflow用户
提问于 2019-11-27 16:40:42
回答 2查看 2K关注 0票数 4

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

代码语言:javascript
复制
public void Run([QueueTrigger("queue1")]object data, ILogger log)
{
    // Do something with data
}

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

代码语言:javascript
复制
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依赖关系的库中:

代码语言:javascript
复制
public class MyQueueHandler : QueueBase<MyModel>
{
    public void OnRunExecuted(MyModel data) => ...;
}

但是不可能传入一个队列名..。是吗?

EN

回答 2

Stack Overflow用户

发布于 2020-07-07 10:14:43

请参阅绑定表达式

简而言之,您可以将变量队列名传递为“%队列-名称-变量%”。

代码语言:javascript
复制
[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,如

代码语言:javascript
复制
{"queue-name-variable": "queue-name-in-current-env"}
票数 2
EN

Stack Overflow用户

发布于 2019-11-27 16:51:53

我记得属性QueueTrigger只接受const字符串,因此您可以尝试使用环境变量(如post 如何传递动态队列名中的环境变量)来制作一些技巧。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59074815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档