![](/img/trans.png)
[英]Unable to send message into Service Bus Queue using Azure function
[英]Unable to write message to Service Bus Queue from Azure Function
我正在嘗試按照文檔將消息從 Azure 函數寫入 Azure 服務總線隊列( https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus -output?tabs=csharp )。
我從 HTTP 觸發器的“文件->新項目”開始並添加了綁定:
[FunctionName("Message")]
[return: ServiceBus("namequeue")]
public static async Task<string> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
string name = data?.name ?? "DefaultName";
return name;
}
我的 host.json 和 local.settings.json 文件包含:
"extensions": {
"serviceBus": {
"prefetchCount": 100,
"messageHandlerOptions": {
"autoComplete": true,
"maxConcurrentCalls": 32,
"maxAutoRenewDuration": "00:05:00"
},
"sessionHandlerOptions": {
"autoComplete": false,
"messageWaitTimeout": "00:00:30",
"maxAutoRenewDuration": "00:55:00",
"maxConcurrentSessions": 16
},
"batchOptions": {
"maxMessageCount": 1000,
"operationTimeout": "00:01:00",
"autoComplete": "true"
}
}
},
"Values": {
"AzureWebJobsServiceBus": "Endpoint=<redacted>"
}
在本地運行時,出現超時異常(可能是公司防火牆)。
部署到 Azure 后,我可以 POST 到該函數,得到 204 回復,但沒有消息添加到隊列中。
我想我錯過了一個關鍵步驟,因為 Azure 門戶中的 function.json 有:
{
"generatedBy": "Microsoft.NET.Sdk.Functions-3.0.13",
"configurationSource": "attributes",
"bindings": [
{
"type": "httpTrigger",
"methods": [
"post"
],
"authLevel": "anonymous",
"name": "req"
}
],
"disabled": false,
"scriptFile": "../bin/AppMapServiceBusCreate.dll",
"entryPoint": "AppMapServiceBus.CreateMessageFunction.Run"
}
當我點擊門戶中的集成時,沒有輸出,添加一個會給我一個警告“為了查看可用功能模板的完整列表,您必須為您的應用程序設置擴展包。”。
我認為擴展包不是 .NET 代碼,事實上我通過 NuGet 添加了以下內容做了同樣的事情?
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="4.3.0" />
如果這是准確的,我如何/添加什么到function.json?
對於使用輸出觸發器寫入服務總線的 Azure Functions,你需要在函數的配置中添加連接字符串作為應用程序設置。 默認情況下,預期的設置名稱是AzureWebJobsServiceBus
:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.