【发布时间】:2020-05-30 18:18:39
【问题描述】:
我有一个带有多个服务总线输出绑定的简单 HTTP 触发器 Azure 函数。所有绑定都指向同一个主题,但它们有不同的订阅。如果我要通过 function.json 设置这个函数应用程序,那就很简单了:
{
"bindings": [
{
"authLevel": "function",
"name": "req",
"type": "httpTrigger",
"direction": "in",
"methods": [
"get",
"post"
]
},
{
"name": "$return",
"type": "http",
"direction": "out"
},
{
"type": "serviceBus",
"connection": "SERVICEBUS",
"name": "output",
"topicName": "outtopic",
"subscriptionName": "sub",
"direction": "out"
},
{
"type": "serviceBus",
"connection": "SERVICEBUS",
"name": "output",
"topicName": "outtopic",
"subscriptionName": "sub2",
"direction": "out"
}
],
"disabled": false
}
但我通过 Visual Studio 发布我的函数,因此我的 Azure Functions 在门户中是只读的,并且 function.json 在发布时由 VS 自动生成。 问题是我无法弄清楚如何设置指向不同订阅的多个输出绑定。目前我有这样的事情:
[FunctionName("Function2")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
[ServiceBus("outtopic", entityType:EntityType.Topic)] IAsyncCollector<string> output,
[ServiceBus("outtopic", entityType: EntityType.Topic)] IAsyncCollector<string> output2,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
await output.AddAsync(requestBody);
return new OkObjectResult("OK");
}
你可以看到 output 和 output2 指向同一个主题,但是没有指定订阅的选项。 在这一点上,我非常有信心这还没有实施。但我希望可能有一个解决方法?
【问题讨论】:
标签: azure azure-functions azureservicebus