0

按照下面的文档,我尝试创建一个将消息添加到队列的 azure 函数。

https://docs.microsoft.com/en-us/azure/azure-functions/functions-add-output-binding-storage-queue-vs?tabs=in-process#add-an-output-binding

代码被触发并在没有错误的情况下执行,但我在 Azure 存储资源管理器队列中看不到任何消息。

我将 Azurite Storage 帐户添加到本地存储资源管理器。但是没有创建队列,也没有添加消息。

AzureWebJobsStorage 设置为“UseDevelopmentStorage=true”。

如何在存储资源管理器中进行本地测试?步骤是什么,我需要什么?

4

1 回答 1

0

我尝试通过以下步骤重现该问题:

  1. 在 Visual Studio 中创建 Azure Functions(堆栈:.Net Core 3.1 - Http Trigger)。
  2. Microsoft.Azure.WebJobs.Extensions.Storage通过 Nuget 包解决方案将此包安装到项目中。
  3. 将输出队列绑定添加到任务静态方法,如:

public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req, [Queue("outqueue"), StorageAccount("AzureWebJobsStorage")] ICollector<string> msg, ILogger log)

添加了将函数 URL 中传递的参数写入输出队列的代码(在解析响应消息代码之前):

if (!string.IsNullOrEmpty(name))
    {
    // Add a message to the output collection.
    msg.Add(string.Format("Name passed to the function: {0}", name));
    }

现在完整的代码看起来是:

在此处输入图像描述

local.settings.json

{
    "IsEncrypted": false,
    "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet"
    }
}
  1. 在本地运行该函数,并将控制台中的函数 URL 连同以下参数复制到浏览器: http://localhost:7071/api/Function1?name=HariKrishna 然后它应该在浏览器中显示为Hello, HariKrishna. This HTTP triggered function executed successfully.

  2. 转到Storage Explorer > Expand Queues并刷新它(右键单击队列并单击刷新)以查看函数运行时在函数运行时创建的队列并刷新输出队列以查看消息,就像控制台输出一样,浏览器输出和队列消息在下面的截图中:

在此处输入图像描述

在此处输入图像描述

于 2021-12-22T04:17:06.373 回答