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

标签 azure azure-webjobs azure-webjobssdk

我有一个 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/

相关文章:

azure - 如何在 Program.cs 中检索 Azure 应用程序配置服务设置

c# - 将 ASP.NET Core 2.1 预览应用程序部署到 Azure

c# - Azure WebJob 的 BlobInput 和 BlobOutput 类在哪里?

azure - Azure WebJob 上的 HTTP 请求/响应

c# - Azure Web 作业 : No functions found in another assembly

带有计时器触发器的Azure函数: UnscheduledInvocationReason

Azure Web 作业影响应用服务计划性能的悠久历史

c# - Azure WebJobs 3.0 上的 IQueueProcessorFactory?

spring-boot - 如何将简单的Java Spring启动应用程序部署到Azure Web Job中?

.net - 我可以在 Azure 上为常规网站设置 SSL吗? (不是 WCF 或 MVC)