如何使用 C# 编写可在项目出现在 azure 服务总线队列中时触发的 azure 函数?

How to write azure function that can get triggered when an item appears in azure service bus queue using C#?

新的 azure 函数预览包含一些 C# 模板。但是 C# 没有服务总线队列模板。有一个带有服务总线的节点的触发器模板。但仔细检查,它只支持通知中心而不支持服务总线队列。是否有可能编写一个只能在项目出现在 azure 服务总线队列中时触发的 azure 函数?如果现在做不到,近期会不会有这样的模板?

谢谢。 拉古/..

根据 https://azure.microsoft.com/en-us/documentation/articles/functions-reference/,与 SB 没有绑定。 最好的方法是在 UserVoice 上提交您的想法 - https://feedback.azure.com/forums/355860-azure-functions .

更新: 以下步骤和信息仍然有效,但是我们现在在门户中有一个 "ServiceBusQueueTrigger - C#" 模板,因此不再需要解决方法步骤:)

C# 已经支持 ServiceBus,我们只需要为它添加一个模板(我们很快就会添加)。通常,模板只是起点 - 您始终可以通过添加额外的绑定来修改模板,或者从空模板开始构建您自己的函数。

在我们上传模板之前,您可以从 C# 空模板 开始自行完成此工作。例如,您可以在 高级编辑器 集成 选项卡上输入如下绑定信息:

{
  "bindings": [
    {
      "type": "serviceBusTrigger",
      "name": "message",
      "direction": "in",
      "queueName": "samples-input",
      "connection": "myServiceBus"
    }
  ]
}

确保您的 Function App 具有与 connection 属性 名称匹配的 AppSetting,其中包含您的 ServiceBus 连接字符串。看起来我们目前在 ServiceBus 的连接字符串选择器方面存在一些问题(也将很快修复),但您可以使用 "Function app settings"/"Go to App Service Settings"/"Application Settings" 添加此应用环境。然后就可以使用对应的Function代码了:

using System;
using Microsoft.Azure.WebJobs.Host;

public static void Run(string message, TraceWriter log)
{
    log.Verbose($"C# ServiceBus Queue function processed message: {message}");
}

只要有新消息添加到 ServiceBus 队列,就会调用此函数 samples-input