我有一个 C# WebJob,它使用 QueueTrigger
和自定义 INameResolver
从应用程序设置中查找队列名称。这部分按预期工作,但现在在方法体内,我需要知道从中接收触发消息的队列的名称。理想情况下,我希望能够在我的方法中添加一个专门命名的字符串参数,该参数将由 WebJobs SDK 填充触发队列名称,但 documentation没有提到任何此类可绑定(bind)参数。
是否有另一种方法可以实现此目的,最好不要在两个位置对队列名称/模式进行硬编码(即一次在 QueueTrigger
属性中,再次在方法体内)或编写自定义字符串解析代码为 %patterns%
手动调用我的 INameResolver
?
最佳答案
您可以向函数添加一个附加参数来绑定(bind)到队列,如下所示:
public static void MyFunction(
[QueueTrigger("%name%")] string message,
[Queue("%name%")] CloudQueue queue)
{
string queueName = queue.Name;
}
另一种方法是按照您的建议 - 让您的自定义 INameResolver 实例可用于您的作业功能(例如通过 DI),然后只需调用resolver.Resolve 即可获取名称。
关于azure - 如何在运行时获取触发队列的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33487311/