簡體   English   中英

無法從 Azure 函數向服務總線隊列寫入消息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM