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

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

存储资源管理器中显示的队列消息

先决条件

若要完成本快速入门教程,需先执行以下操作:

添加输出绑定

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

  1. 在 Azure 门户中,打开在通过 Azure 门户创建第一个函数中创建的函数应用的函数应用页。 为此,请选择“所有服务”>“Function App”,然后选择你的函数应用。

  2. 选择在此前的那个快速入门中创建的函数。

  3. 选择“集成”>“新建输出”>“Azure 队列存储”。

  4. 单击“选择”。

    将队列存储输出绑定添加到 Azure 门户中的函数。

  5. 如果收到“扩展未安装”消息,请选择“安装”以在函数应用中安装存储绑定扩展。 这可能需要一到两分钟。

    安装存储绑定扩展

  6. 在“Azure 队列存储输出”下,使用在此屏幕截图下的表中指定的设置:

    将队列存储输出绑定添加到 Azure 门户中的函数。

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

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

添加使用输出绑定的代码

在此部分,请添加将消息写入输出队列的代码。 该消息包括在查询字符串中传递到 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. 保存代码更改后,选择“运行”。

    将队列存储输出绑定添加到 Azure 门户中的函数。

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

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

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

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

将存储资源管理器连接到帐户

如果已安装存储资源管理器并将其连接到此快速入门中使用的存储帐户,则请跳过此部分。

  1. 运行 Azure 存储资源管理器工具,选择左侧的“连接”图标,选择“使用存储帐户名称和密钥”,然后选择“下一步”。

    运行“存储帐户资源管理器”工具。

  2. 在 Azure 门户的函数应用页中选择函数,然后选择“集成”。

  3. 选择在前面的步骤中添加的“Azure 队列存储”输出绑定。

  4. 展开页面底部的“文档”部分。

    门户显示的凭据可以在存储资源管理器中用于连接到存储帐户。

    获取存储帐户连接凭据。

  5. 从门户复制“帐户名称”值,将其粘贴在存储资源管理器的“帐户名称”框中。

  6. 单击“帐户密钥”旁边的显示/隐藏图标以显示该值,然后复制“帐户密钥”值并将其粘贴在存储资源管理器的“帐户密钥”框中。

  7. 选择“下一步”>“连接”。

    粘贴存储凭据,然后进行连接。

检查输出队列

  1. 在存储资源管理器中选择用于本快速入门的存储帐户。

  2. 展开“队列”节点,然后选择名为 outqueue 的队列。

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

    存储资源管理器中显示的队列消息

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

清理资源

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

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

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

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

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

    从函数应用页选择要删除的资源组。

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

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

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

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

后续步骤

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