使用 Functions 将消息添加到 Azure 存储队列

在 Azure Functions 中,可以通过输入和输出绑定以声明方式将外部服务中的数据提供给代码使用。 在本快速入门中,可以使用输出绑定,这样便可以当某个 HTTP 请求触发某个函数时,在队列中创建一条消息。 可以使用 Azure 存储容器查看函数创建的队列消息。

先决条件

完成本快速入门教程需要:

添加输出绑定

在此部分,请使用门户 UI 将队列存储输出绑定添加到此前创建的函数。 有了此绑定,就可以在尽量减少代码编写工作的情况下在队列中创建消息。 不需为打开存储连接、创建队列、获取队列引用之类的任务编写代码。 Azure Functions 运行时和队列输出绑定为你处理这些任务。

  1. 在 Azure 门户中,打开在通过 Azure 门户创建第一个函数中创建的函数应用的函数应用页。 若要打开该页面,请搜索并选择“函数应用”。 然后,选择你的函数应用。

  2. 选择你的函数应用,然后选择在前面的快速入门中创建的函数。

  3. 选择“集成”,然后选择“+ 添加输出”。

    Create an output binding for your function.

  4. 选择“Azure 队列存储”绑定类型,并添加在此屏幕截图下的表中指定的设置:

    Add a Queue storage output binding to a function in the Azure portal.

    设置 建议的值 说明
    消息参数名称 outputQueueItem 输出绑定参数的名称。
    队列名称 outqueue 要连接到存储帐户中的队列的名称。
    存储帐户连接 AzureWebJobsStorage 可以使用 Function App 已在使用的存储帐户连接,也可以创建一个新的存储帐户连接。
  5. 选择“确定”以添加绑定。

现在,已定义输出绑定,需要更新代码以使用绑定将消息添加到队列。

添加使用输出绑定的代码

在此部分,请添加将消息写入输出队列的代码。 该消息包括在查询字符串中传递到 HTTP 触发器的值。 例如,如果查询字符串包含 name=Azure,则队列消息将是“传递给函数的名称:Azure”。

  1. 在函数中,选择“代码 + 测试”以在编辑器中显示函数代码。

  2. 根据函数语言更新函数代码:

    向方法签名添加 outputQueueItem 参数,如以下示例所示。

    public static async Task<IActionResult> Run(HttpRequest req,
        ICollector<string> outputQueueItem, ILogger log)
    {
        ...
    }
    

    return 语句之前的函数体中,添加使用参数创建队列消息的代码。

    outputQueueItem.Add("Name passed to the function: " + name);
    
  3. 选择“保存”以保存更改。

测试函数

  1. 保存代码更改后,选择“测试”。

  2. 确认你的测试与下图一致,然后选择“运行”。

    Test the queue storage binding in the Azure portal.

    请注意,请求正文包含 nameAzure。 此值显示在队列消息中,该消息是在调用函数时创建的。

    如果不想选择此处的“运行”,也可调用该函数,方法是在浏览器中输入 URL,然后在查询字符串中指定 name 值。 此浏览器方法在以前的快速入门中演示过。

  3. 检查日志以确保该函数成功。

首次使用输出绑定时,Functions 运行时会在存储帐户中创建名为 outqueue 的新队列。 可以使用存储帐户来验证是否已创建队列以及其中的消息。

查找连接到 AzureWebJobsStorage 的存储帐户

  1. 转到函数应用,选择“配置”。

  2. 在“应用程序设置”下,选择“AzureWebJobsStorage”。

    Screenshot shows the Configuration page with AzureWebJobsStorage selected.

  3. 查找并记下帐户名。

    Locate the storage account connected to AzureWebJobsStorage.

检查输出队列

  1. 在函数应用的资源组中,选择用于本快速入门的存储帐户。

  2. 在“队列服务”下,选择“队列”,然后选择名为 outqueue 的队列。

    此队列包含在运行 HTTP 触发的函数时队列输出绑定创建的消息。 如果使用 Azure 的默认 name 值调用了此函数,则队列消息为“传递给函数的名称: Azure”。

  3. 再次运行函数,此时会看到新消息出现在队列中。

清理资源

本教程系列中的其他快速入门教程是在本文的基础上制作的。 如果打算使用后续的快速入门、教程或者在本快速入门中创建的任何服务,请勿清理这些资源。

Azure 中的资源是指函数应用、函数、存储帐户等。 这些资源可以组合到资源组中,删除该组即可删除组中的所有内容。

已创建完成这些快速入门所需的资源。 这些资源可能需要付费,具体取决于帐户状态服务定价。 如果不再需要这些资源,请参阅下面介绍的资源删除方法:

  1. 在 Azure 门户中转到“资源组”页。

    若要从函数应用页转到该页,请选择“概览”选项卡,然后选择“资源组”下的链接。

    Select the resource group to delete from the function app page.

    若要从仪表板转到该页,请选择“资源组”,然后选择用于本文的资源组。

  2. 在“资源组”页中查看所包括的资源的列表,然后验证这些资源是否是要删除的。

  3. 选择“删除资源组”,然后按说明操作。

    可能需要数分钟才能删除完毕。 完成后会显示一个通知,持续数秒。 也可以选择页面顶部的钟形图标来查看通知。

后续步骤

本快速入门介绍了如何将输出绑定添加到现有函数。 有关队列存储绑定的详细信息,请参阅 Azure Functions 存储队列绑定