使用 Functions 将消息添加到 Azure 存储队列
在 Azure Functions 中,可以通过输入和输出绑定以声明方式将外部服务中的数据提供给代码使用。 在本文中,将使用输出绑定,以便当某个 HTTP 请求触发某个函数时,在队列中创建一条消息。 可以使用 Azure 存储容器查看函数创建的队列消息。
先决条件
Azure 订阅。 如果没有订阅,请在开始之前创建一个试用帐户。
按照在 Azure 门户中创建第一个函数的说明操作,省略“清理资源”步骤,以创建要在本文中使用的函数应用和函数。
添加输出绑定
在本部分,将使用门户 UI 将 Azure 队列存储输出绑定添加到在先决条件中创建的函数。 有了此绑定,就可以在尽量减少代码编写工作的情况下在队列中创建消息。 不需为打开存储连接、创建队列、获取队列引用之类的任务编写代码。 Azure Functions 运行时和队列输出绑定为你处理这些任务。
在 Azure 门户中,搜索并选择在通过 Azure 门户创建第一个函数中创建的函数应用。
在函数应用中,选择创建的函数。
选择“集成”,然后选择“+ 添加输出”。
选择“Azure 队列存储”绑定类型,然后添加此屏幕截图下的表格中指定的设置:
设置 建议值 description 消息参数名称 outputQueueItem 输出绑定参数的名称。 队列名称 outqueue 要连接到存储帐户中的队列的名称。 存储帐户连接 AzureWebJobsStorage 可以使用函数应用正在使用的现有存储帐户连接,也可以创建一个新的存储帐户连接。 选择“确定”以添加绑定。
现在,已定义输出绑定,需要更新代码以使用绑定将消息添加到队列。
添加使用输出绑定的代码
在此部分,请添加将消息写入输出队列的代码。 该消息包括在查询字符串中传递到 HTTP 触发器的值。 例如,如果查询字符串包含 name=Azure
,则队列消息将是“传递给函数的名称: Azure”。
在函数中,选择“代码 + 测试”以在编辑器中显示函数代码。
根据函数语言更新函数代码:
向方法签名添加 outputQueueItem 参数,如以下示例所示:
public static async Task<IActionResult> Run(HttpRequest req, ICollector<string> outputQueueItem, ILogger log) { ... }
在
return
语句之前的函数体中,添加使用参数创建队列消息的代码:outputQueueItem.Add("Name passed to the function: " + name);
选择“保存”以保存更改。
测试函数
保存代码更改后,选择“测试”。
确认测试与此屏幕截图匹配,然后选择“运行”。
请注意,请求正文包含
name
值 Azure。 此值显示在队列消息中,该消息是在调用函数时创建的。如果不想选择“运行”,也可调用该函数,方法是在浏览器中输入 URL,然后在查询字符串中指定
name
值。 通过 Azure 门户创建第一个函数中介绍了此浏览器方法。检查日志以确保该函数成功。
首次使用输出绑定时,Functions 运行时会在存储帐户中创建名为 outqueue 的新队列。 可以使用存储帐户来验证是否已创建队列及其中的消息。
查找连接到 AzureWebJobsStorage 的存储帐户
检查输出队列
在函数应用的资源组中,选择正在使用的存储帐户。
在“队列服务”下,选择“队列”,然后选择名为“outqueue”的队列。
此队列包含在运行 HTTP 触发的函数时队列输出绑定创建的消息。 如果使用 Azure 的默认
name
值调用了此函数,则队列消息为“传递给函数的名称: Azure”。再次运行函数。
队列中显示新消息。
清理资源
在前面的步骤中,你在资源组中创建了 Azure 资源。 如果将来不再需要这些资源,可以通过删除资源组来删除它们。
从 Azure 门户菜单或“主页”页上,选择“资源组”。 然后,在“资源组”页上,选择“myResourceGroup”。
在“myResourceGroup”页中,确保列出的资源是要删除的资源。
选择“删除资源组” ,在文本框中键入“myResourceGroup” 以确认,然后选择“删除” 。
相关内容
本文介绍了如何将输出绑定添加到现有函数。 有关队列存储绑定的详细信息,请参阅队列存储触发器和绑定。
- Azure Functions 触发器和绑定概念
了解 Functions 如何与其他服务集成。 - Azure Functions 开发人员参考
提供有关 Functions 运行时的更多技术信息,并为编码函数及定义触发器和绑定提供参考。 - 在本地对 Azure Functions 进行编码和测试
介绍在本地开发函数的选项。