在这篇文章中,我们将用python作为编程语言来讨论Azure Queue Storage服务。顾名思义,Azure队列存储是Azure中一个简单的队列和消息传递服务,可以用来建立队列并以异步的方式处理消息。队列有助于将多个系统解耦,并在分布式架构中提供中间层。Azure的队列存储服务允许用户从世界任何地方连接和存储大小为64KB的消息。它通过使用HTTP或HTTPS端点暴露出来,可以包含数百万需要处理的消息。
在这篇文章中,我们将使用python以编程方式逐步创建和删除Azure Queue Storage。我们还将对包括以下四个重要的场景进行了解。
- 向队列中添加一条消息
- 从队列中偷看一条消息
- 从队列中获取一条消息
- 从队列中删除消息
前提条件
为了继续学习这篇文章,我建议你必须具备以下前提条件。
- Python 3- 由于本文主要侧重于以编程方式访问Azure存储队列元素,所以你的机器上必须安装Python 3。
- 有效的Azure帐户--另外,在继续前进之前,请确保你能访问有效的Azure帐户,你有足够的权限来创建和删除队列存储。
Azure队列存储组件
让我们首先了解Azure中队列存储服务的重要组成部分。

图1 - Azure队列存储服务组件
从上图中可以看出,Azure中的队列存储账户有以下组件。
- 存储账户- 为了在Azure中建立任何队列,有必要创建一个存储账户。在这个存储账户中,我们可以根据需要创建多个队列。
- 队列- 这是实际的队列,将包含消息。我们可以连接到这个队列并发送消息。一个存储账户下可以创建多个队列。
- 消息- 一旦队列就位,我们就可以开始向队列发送消息。这可以通过编程方式或使用Azure门户来完成
在上图中,我们有一个名称为 "my-storage"的存储账户,其下有两个队列,即 "订单"和 "通知"。这些队列的定义是为了在逻辑上处理消息应该如何处理,以及它们提供什么服务。
此外,为了连接到Azure的队列,我们需要知道该特定队列的URL。它的格式通常是这样的。
http://<STORAGE_ACCOUNT>.queue.core.windows.net/<QUEUE_NAME>。
如果我们有 "my-storage "账户中的 "订单 "队列,那么URL将如下。
在Azure中创建一个存储账户
为了开始工作,我们应该在Azure中创建一个存储账户,在这个账户下我们可以创建我们的队列。最简单的方法是使用Azure门户。另外,你也可以使用Azure CLI或PowerShell来创建Azure中的存储账户。导航到Azure门户,搜索存储账户。点击创建,然后在右边出现创建存储账户的刀片。
图2 - 创建存储账户
一旦你提供了基本细节,你可以点击审查+创建,以默认设置创建存储账户。然而,在配置存储账户的过程中,你可以通过浏览其他标签自由选择其他设置。部署可能需要一些时间,但一旦完成,你可以在门户上看到它,并确认到目前为止,存储账户中没有队列。
图3 - 在Azure中创建的存储账户
存储账户创建后,我们需要获得访问密钥,以便用python编程连接到存储账户。导航到安全+网络下的访问密钥,点击显示密钥。复制连接字符串并储存起来以备后用。
图4 - 获取存储账户的访问密钥
安装Azure Storage SDK for Python
在Azure中创建存储账户后的下一步是,我们需要在我们的机器上安装Azure存储的python SDK。这可以通过从常规的Python软件包管理器中下载并安装该软件包来完成。在你的终端上,写下以下命令。
pip install azure-storage-queue
图5 - 从PyPi下载和安装Azure Queue Storage SDK
在python中创建程序以连接到Azure Queue Storage
现在我们已经设置好了所有必要的要求,我们可以在Python中创建我们的程序了。为了本文的目的,我将使用Visual Studio Code中的Jupyter Notebook来解释以下步骤。
设置连接字符串
将连接字符串分配给一个变量,以便以后使用。
图6 - 连接字符串
向程序中导入必要的库
我们需要将Azure Queue Storage SDK导入我们的程序,以便利用它来连接到Azure的队列存储。
图7 - 将SDK导入到程序中
创建队列客户端和队列
为队列提供一个名称,并使用SDK和连接字符串创建队列客户端。使用队列客户端,你现在可以创建队列。
图8 - 在Azure队列存储中创建队列
一旦队列创建完毕,你就会看到JSON格式的响应。另外,你也可以从门户中验证队列。
图9 - 在门户中已经创建了队列
向队列发送消息
一旦队列被创建,你可以开始向队列发送消息。这可以通过使用队列客户端的send_message()方法简单完成。
图10 - 向Azure Storage的队列发送消息
一旦消息发送完毕,你就会收到说明操作结果的JSON响应。
窥视队列中的消息
窥视队列中的消息有助于我们查看队列中的消息,而不需要删除它们。当你需要在处理队列中的消息之前衡量它们是什么时,这很有帮助。它可以在peek_messages()函数的帮助下完成。
图11 - 从Azure存储队列中偷看消息
处理和删除队列中的消息
现在我们知道了如何从队列中偷看消息,让我们也学习一下如何从队列中读取和处理消息。另外,在处理完消息后,将其从队列中删除是很重要的,这样它就不会被再次处理。
图12 - 处理和删除队列中的消息
默认情况下,当receive_messages()函数被调用时,消息对于从同一队列中读取消息的其他程序是不可见的,以防止不必要的处理。隐形时间被设置为30秒,之后它又变得可见。
从存储账户中删除队列
你可以通过使用 delete_queue() 函数从存储账户中删除队列。
图 13 - 删除队列
总结
在这篇文章中,我们已经详细了解了Azure队列存储以及如何使用python以编程方式创建和删除队列。我们还学习了如何向队列中添加消息,偷看和获取消息,最后从队列中删除消息。这就是用户可以用来与Azure存储队列服务互动的四种不同服务。你也可以自由选择其他的运行时来代替python。











