我有一个C#WebJob,它使用QueueTrigger
和自定义INameResolver
从应用程序设置中查找队列名称。这部分按预期工作,但现在在方法体内,我需要知道从中接收触发消息的队列的名称。理想情况下,我希望能够在我的方法上添加一个特殊命名的字符串参数,该参数将由WebJobs SDK填充触发队列名称,但documentation并未提及任何这样的可绑定参数。
是否有其他方法可以实现此目的,最好不要在两个位置硬编码队列名称/模式(即一次在QueueTrigger
属性中并再次在方法体内)或编写自定义字符串解析代码以手动调用我的INameResolver
%patterns%
?
答案 0 :(得分:2)
您可以在函数中添加一个额外的参数来绑定到队列,如下所示:
public static void MyFunction(
[QueueTrigger("%name%")] string message,
[Queue("%name%")] CloudQueue queue)
{
string queueName = queue.Name;
}
如您所建议的另一种选择 - 让您的自定义INameResolver实例可用于您的工作职能(例如通过DI),然后只需调用resolver.Resolve获取名称。