У меня есть простой триггер HTTP Azure Функция с несколькими привязками вывода служебной шины. Все привязки указывают на одну и ту же Topi c, но у них разные подписки. Если бы я должен был установить это приложение функции через функцию. 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
}
Но я публикую sh мои функции через Visual Studio, и поэтому мои Azure функции доступны только для чтения в портал и функция. 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 указывают на одну и ту же Topi c, но нет возможности указать подписку. На данный момент я довольно уверен, что это еще не было реализовано. Но я надеюсь, что есть обходной путь, может быть?