如何在运行时获取触发队列的名称?

时间:2015-11-02 21:28:51

标签: azure azure-webjobs azure-webjobssdk

我有一个C#WebJob,它使用QueueTrigger和自定义INameResolver从应用程序设置中查找队列名称。这部分按预期工作,但现在在方法体内,我需要知道从中接收触发消息的队列的名称。理想情况下,我希望能够在我的方法上添加一个特殊命名的字符串参数,该参数将由WebJobs SDK填充触发队列名称,但documentation并未提及任何这样的可绑定参数。

是否有其他方法可以实现此目的,最好不要在两个位置硬编码队列名称/模式(即一次在QueueTrigger属性中并再次在方法体内)或编写自定义字符串解析代码以手动调用我的INameResolver %patterns%

1 个答案:

答案 0 :(得分:2)

您可以在函数中添加一个额外的参数来绑定到队列,如下所示:

public static void MyFunction(
  [QueueTrigger("%name%")] string message,
  [Queue("%name%")] CloudQueue queue)
{
  string queueName = queue.Name;
}

如您所建议的另一种选择 - 让您的自定义INameResolver实例可用于您的工作职能(例如通过DI),然后只需调用resolver.Resolve获取名称。

相关问题