使用Python的Azure队列存储

101 阅读6分钟

在这篇文章中,我们将用python作为编程语言来讨论Azure Queue Storage服务。顾名思义,Azure队列存储是Azure中一个简单的队列和消息传递服务,可以用来建立队列并以异步的方式处理消息。队列有助于将多个系统解耦,并在分布式架构中提供中间层。Azure的队列存储服务允许用户从世界任何地方连接和存储大小为64KB的消息。它通过使用HTTP或HTTPS端点暴露出来,可以包含数百万需要处理的消息。

在这篇文章中,我们将使用python以编程方式逐步创建和删除Azure Queue Storage。我们还将对包括以下四个重要的场景进行了解。

  • 向队列中添加一条消息
  • 从队列中偷看一条消息
  • 从队列中获取一条消息
  • 从队列中删除消息

前提条件

为了继续学习这篇文章,我建议你必须具备以下前提条件。

  • Python 3- 由于本文主要侧重于以编程方式访问Azure存储队列元素,所以你的机器上必须安装Python 3。
  • 有效的Azure帐户--另外,在继续前进之前,请确保你能访问有效的Azure帐户,你有足够的权限来创建和删除队列存储。

Azure队列存储组件

让我们首先了解Azure中队列存储服务的重要组成部分。

Queue Storage Service Components

图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门户,搜索存储账户。点击创建,然后在右边出现创建存储账户的刀片。

Creating the Storage Account

图2 - 创建存储账户

一旦你提供了基本细节,你可以点击审查+创建,以默认设置创建存储账户。然而,在配置存储账户的过程中,你可以通过浏览其他标签自由选择其他设置。部署可能需要一些时间,但一旦完成,你可以在门户上看到它,并确认到目前为止,存储账户中没有队列。

Storage Account created in Azure

图3 - 在Azure中创建的存储账户

存储账户创建后,我们需要获得访问密钥,以便用python编程连接到存储账户。导航到安全+网络下的访问密钥,点击显示密钥。复制连接字符串并储存起来以备后用。

Fetching the Access Keys for the Storage Account

图4 - 获取存储账户的访问密钥

安装Azure Storage SDK for Python

在Azure中创建存储账户后的下一步是,我们需要在我们的机器上安装Azure存储的python SDK。这可以通过从常规的Python软件包管理器中下载并安装该软件包来完成。在你的终端上,写下以下命令。

pip install azure-storage-queue

Downloading and Installing Azure Queue Storage SDK from the PyPi

图5 - 从PyPi下载和安装Azure Queue Storage SDK

在python中创建程序以连接到Azure Queue Storage

现在我们已经设置好了所有必要的要求,我们可以在Python中创建我们的程序了。为了本文的目的,我将使用Visual Studio Code中的Jupyter Notebook来解释以下步骤。

设置连接字符串

将连接字符串分配给一个变量,以便以后使用。

Connection String

图6 - 连接字符串

向程序中导入必要的库

我们需要将Azure Queue Storage SDK导入我们的程序,以便利用它来连接到Azure的队列存储。

Importing the SDK to the program

图7 - 将SDK导入到程序中

创建队列客户端和队列

为队列提供一个名称,并使用SDK和连接字符串创建队列客户端。使用队列客户端,你现在可以创建队列。

Creating the queue in Azure Queue Storage

图8 - 在Azure队列存储中创建队列

一旦队列创建完毕,你就会看到JSON格式的响应。另外,你也可以从门户中验证队列。

Queue has been created in the portal

图9 - 在门户中已经创建了队列

向队列发送消息

一旦队列被创建,你可以开始向队列发送消息。这可以通过使用队列客户端的send_message()方法简单完成。

Sending a message to the queue in Azure Storage

图10 - 向Azure Storage的队列发送消息

一旦消息发送完毕,你就会收到说明操作结果的JSON响应。

窥视队列中的消息

窥视队列中的消息有助于我们查看队列中的消息,而不需要删除它们。当你需要在处理队列中的消息之前衡量它们是什么时,这很有帮助。它可以在peek_messages()函数的帮助下完成。

Peeking messages from the Azure Storage Queue

图11 - 从Azure存储队列中偷看消息

处理和删除队列中的消息

现在我们知道了如何从队列中偷看消息,让我们也学习一下如何从队列中读取和处理消息。另外,在处理完消息后,将其从队列中删除是很重要的,这样它就不会被再次处理。

Processing and removing messages from the queue

图12 - 处理和删除队列中的消息

默认情况下,当receive_messages()函数被调用时,消息对于从同一队列中读取消息的其他程序是不可见的,以防止不必要的处理。隐形时间被设置为30秒,之后它又变得可见。

从存储账户中删除队列

你可以通过使用 delete_queue() 函数从存储账户中删除队列。

Deleting the queue

图 13 - 删除队列

总结

在这篇文章中,我们已经详细了解了Azure队列存储以及如何使用python以编程方式创建和删除队列。我们还学习了如何向队列中添加消息,偷看和获取消息,最后从队列中删除消息。这就是用户可以用来与Azure存储队列服务互动的四种不同服务。你也可以自由选择其他的运行时来代替python。