Microsoft Azure - 队列


在开发者常用的语言中,队列是一种用于存储数据的数据结构,遵循先进先出的规则。数据项可以从队列的后面插入,同时从前面检索。Azure 队列是一个非常相似的概念,用于将消息存储在队列中。发送者发送消息,客户端接收并处理它们。消息附加了一些属性,例如到期时间。

客户端通常会处理并删除消息。Windows Azure 服务允许该消息存储 7 天,之后如果客户端未删除该消息,该消息将被自动删除。可以有一个发送者和一个客户端,或者一个发送者和多个客户端,或者多个发送者和多个客户端。

Windows Azure 为消息队列提供了两种服务。本章介绍 Windows Azure 队列。另一项服务称为“服务总线队列”。

组件解耦是消息队列服务的优点之一。它在异步环境中运行,可以在应用程序的不同组件之间发送消息。因此,它为管理工作流程和任务提供了有效的解决方案。例如,完成任务的消息从应用程序的前端发送,并由后端工作人员接收,然后后端工作人员完成任务并删除该消息。

注意事项

存储队列中的消息不会在任何地方复制,这意味着消息只有一份副本。可以处理的最大消息数为 20,000 条。消息的最大大小可以是 64 kb。

使用 PowerShell 管理队列

创建队列

步骤 1 - 右键单击​​任务栏中的 Windows PowerShell。选择“以管理员身份运行 ISE”。

步骤 2 - 运行以下命令来访问您的帐户。请替换您帐户中突出显示的部分。

$context = New-AzureStorageContext -StorageAccountName tutorialspoint StorageAccountKey 
iUZNeeJD+ChFHt9XHL6D5rkKFWjzyW4FhV0iLyvweDi+Xtzfy76juPzJ+mWtDmbqCWjsu/nr+1pqBJj rdOO2+A==

步骤 3 - 指定要在其中创建队列的存储帐户。

Set-AzureSubscription –SubscriptionName "BizSpark" -CurrentStorageAccount tutorialspoint 

步骤 4 - 创建队列。

$QueueName = "thisisaqueue" 
$Queue = New-AzureStorageQueue –Name $QueueName -Context $Ctx 

创建队列

检索队列

$QueueName = "thisisaqueue" 

$Queue = Get-AzureStorageQueue –Name $QueueName –Context $Ctx

删除队列

$QueueName = "thisisaqueue" 

Remove-AzureStorageQueue –Name $QueueName –Context $Ctx

删除队列

将消息插入队列

第 1 步- 登录您的帐户。

$context = New-AzureStorageContext -StorageAccountName tutorialspoint StorageAccountKey 

iUZNeeJD+ChFHt9XHL6D5rkKFWjzyW4FhV0iLyvweDi+Xtzfy76juPzJ+mWtDmbqCWjsu/nr+1pqBJj rdOO2+A==

步骤 2 - 指定您要使用的存储帐户。

Set-AzureSubscription –SubscriptionName "BizSpark" -CurrentStorageAccount tutorialspoint

步骤 3 - 检索队列,然后插入消息。

$QueueName = "myqueue" 
$Queue = Get-AzureStorageQueue -Name $QueueName -Context $ctx 

if ($Queue -ne $null) {  
   $QueueMessage = New-Object -TypeName Microsoft.WindowsAzure.Storage.Queue.CloudQueueMessage
      -ArgumentList "my message is this"  
   $Queue.CloudQueue.AddMessage($QueueMessage) 
}

上面脚本中的“if”条件检查指定的队列是否存在。

将下一条消息从队列中出队

步骤 1 - 首先连接到您的帐户并通过运行上述步骤中所示的命令来指定存储帐户。

步骤 2 - 检索队列。

$QueueName = "myqueue" 
$Queue = Get-AzureStorageQueue -Name $QueueName -Context $ctx 
$InvisibleTimeout = [System.TimeSpan]::FromSeconds(10)

步骤 3 - 将下一条消息出队。

$QueueMessage = $Queue.CloudQueue.GetMessage($InvisibleTimeout)

步骤 4 - 删除出列的消息。

$Queue.CloudQueue.DeleteMessage($QueueMessage)

使用 Azure 存储资源管理器管理队​​列

步骤 1 - 从右上角的下拉列表中选择存储帐户。如果您在上次使用期间添加过帐户,则会显示帐户。如果没有,您可以添加帐户,它会要求您提供凭据。登录后,您将登录到 Azure 存储资源管理器中的帐户。

步骤 2 - 您可以通过从左侧面板中选择“队列”并单击“新建”来添加新队列,如下图所示。

队列存储资源管理器

步骤 3 - 输入队列的名称,它将在您的存储帐户中创建。

步骤 4 - 通过选择左侧面板中的队列来添加和删除消息。

队列存储资源管理器