طريقة استخدام Azure Queue Storage من PowerShell

Azure Queue Storage تعرف بأنها خدمة لتخزين أعداد كبيرة من الرسائل التي يمكن الوصول إليها من أي مكان في العالم عبر HTTP أو HTTPS. للحصول على معلومات تفصيلية، راجع مقدمة عن Azure Queue Storage. تغطي هذه المقالة الإرشادية عمليات تخزين قائمة الانتظار الشائعة. ‏‫ستتعلم كيفية:

  • إنشاء ‏‫‏‏قائمة انتظار‬
  • استرداد قائمة الانتظار
  • إضافة رسائل
  • استرداد الرسائل
  • حذف رسائل
  • حذف قائمة انتظار

يتطلب دليل الكيفية هذا الوحدة النمطية Azure PowerShell (Az) الإصدار 12.0.0. قم بتشغيل Get-Module -ListAvailable Az للعثور على الإصدار المثبت حاليًا. إذا كنت بحاجة إلى الترقية، فراجع تثبيت الوحدة النمطية Azure PowerShell.

لا توجد أوامر PowerShell cmdlets لمستوى البيانات لقوائم الانتظار. لإجراء عمليات مستوى البيانات مثل إضافة رسالة وقراءة رسالة وحذف رسالة ، يجب عليك استخدام مكتبة عميل التخزين .NET كما يتم عرضها في PowerShell. يمكنك إنشاء كائن رسالة ثم يمكنك استخدام أوامر مثل AddMessage لإجراء عمليات على هذه الرسالة. يوضح لك هذا المقال كيفية القيام بذلك.

إشعار

نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. راجع تثبيت Azure PowerShell للبدء. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

تسجيل الدخول إلى Azure

سجل الدخول إلى اشتراكك في Azure باستخدام الأمر Connect-AzAccount واتبع الإرشادات التي تظهر على الشاشة. إذا لزم الأمر، يمكنك تحديد اشتراك عن طريق إضافة TenantId المعلمات و Subscription ، وتضمين القيم المعنية.

Connect-AzAccount

استرداد قائمة المواقع

إذا كنت لا تعرف الموقع الذي تريد استخدامه، يمكنك سرد المواقع المتوفرة Get-AzLocation باستخدام cmdlet كما هو موضح في المثال المقدم. بعد عرض القائمة، اختر موقعا وقم بتخزينه في location المتغير للاستخدام في المستقبل. تستخدم الأمثلة eastus في هذا التمرين الموقع.

Get-AzLocation | Select-Object Location
$location = "eastus"

إنشاء مجموعة موارد

مجموعة موارد Azure هي حاوية منطقية يتم بها نشر موارد Azure وإدارتها. اختر اسما لمجموعة الموارد الخاصة بك وقم بتخزينه في resourceGroup المتغير للاستخدام في المستقبل. يستخدم هذا المثال الاسم howtoqueuesrg.

قم بإنشاء مجموعة موارد عن طريق استدعاء New-AzResourceGroup cmdlet وتوفير الاسم والموقع للمعلمة ResourceGroupName كما هو موضح.

$resourceGroup = "howtoqueuesrg"
New-AzResourceGroup -ResourceGroupName $resourceGroup -Location $location

إنشاء حساب تخزين

حساب تخزين Azure هو مورد مسمى بشكل فريد يحتوي على جميع كائنات البيانات الخاصة بك ككائنات ثنائية كبيرة الحجم وملفات وقوائم انتظار وجداول.

اختر اسما لحساب التخزين الخاص بك وقم بتخزينه في storageAccountName المتغير للاستخدام في المستقبل. يستخدم هذا المثال الاسم howtoqueuestorage.

بعد ذلك، قم بإنشاء حساب تخزين قياسي للأغراض العامة مع تخزين متكرر محليا (LRS) باستخدام New-AzStorageAccount cmdlet. وأخيرا، قم بتعيين سياق حساب التخزين الذي يحدد حساب التخزين، مع حفظه في ctx المتغير. يسمح لك الرجوع إلى السياق مع المتغير بإجراء عمليات مقابل حساب تخزين دون توفير بيانات الاعتماد بشكل متكرر.

$storageAccountName = "howtoqueuestorage"

$storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroup `
  -Name $storageAccountName `
  -Location $location `
  -SkuName Standard_LRS

$ctx = $storageAccount.Context

إنشاء ‏‫‏‏قائمة انتظار‬

أولا، اختر اسما لحساب التخزين الخاص بك وقم بتخزينه في queueName المتغير. يستخدم هذا المثال الاسم howtoqueuestorage. بعد ذلك، قم بإنشاء قائمة انتظار باستخدام New-AzStorageQueue cmdlet وتمرير queueName المتغيرين و ctx إلى Name المعلمتين و Context كما هو موضح.

$queueName = "howtoqueue"
$queue = New-AzStorageQueue -Name $queueName -Context $ctx

للحصول على معلومات حول اصطلاحات التسمية لتخزين Azure Queue Storage، راجع قوائم انتظار التسمية وبيانات التعريف .

استرداد قائمة الانتظار

يمكنك استخدام الأمر Cmdlet Get-AzStorageQueue لاسترداد قائمة انتظار معينة أو قائمة بجميع قوائم الانتظار داخل حساب تخزين. توضح الأمثلة التالية كيفية استرداد جميع قوائم الانتظار باستخدام Get-AzStorageQueue cmdlet، وكيفية تحديد قائمة انتظار باستخدام Name المعلمة .

# Retrieve all queues and show their names
Get-AzStorageQueue -Context $ctx | Select-Object Name

# Retrieve a specific queue
$queue = Get-AzStorageQueue -Name $queueName -Context $ctx

# Show the properties of the queue
$queue

إضافة رسائل إلى قائمة انتظار

تستخدم العمليات التي تؤثر على الرسائل في قائمة انتظار مكتبة عميل تخزين .NET كما هو مكشوف في PowerShell. لإضافة رسالة إلى قائمة انتظار، مرر رسالتك كسلسلة إلى QueueClient أسلوب الفئة SendMessage .

يجب أن تكون سلسلة الرسالة بتنسيق UTF-8.

يوضح المثال التالي كيفية إضافة رسائل إلى قائمة الانتظار.

# Create a new message using a constructor of the CloudQueueMessage class
$queueMessage = "This is message 1"

# Add a new message to the queue
$queue.QueueClient.AddMessageAsync($queueMessage)

# Add two more messages to the queue
$queueMessages = @("This is message 2","This is message 3")
$queueMessages | foreach {$queue.QueueClient.AddMessageAsync($_)}

إذا كنت تستخدم Azure Storage Explorer ، فيمكنك الاتصال بحساب Azure الخاص بك وعرض قوائم الانتظار في حساب التخزين، والتنقل لأسفل في قائمة انتظار لعرض الرسائل في قائمة الانتظار.

استرداد الرسائل من قائمة انتظار

على الرغم من أنه ليس مضمونا دائما، يتم استرداد الرسائل من قائمة انتظار بترتيب أفضل تجربة من البداية إلى الخارج.

استنادا إلى حالة الاستخدام الخاصة بك، يمكنك استرداد رسالة واحدة أو أكثر من قائمة انتظار. يمكنك أيضا تعديل رؤية الرسائل، إما السماح بالعمليات الأخرى أو منعها من الوصول إلى نفس الرسالة.

هناك طريقتان لاسترداد الرسائل من قائمة انتظار:

  • تلقي: يؤدي استرداد رسالة باستخدام Receive إلى إلغاء ترتيب الرسالة ولزيادة الخاصية الخاصة بها DequeueCount . ما لم يتم حذف رسالة، يتم إعادة إدراجها في قائمة الانتظار لتتم معالجتها مرة أخرى.
  • نظرة خاطفة: يتيح لك استرداد رسالة باستخدام Peek "معاينة" الرسائل من قائمة الانتظار. Peek لا يقوم بإلغاء ترتيب الرسالة أو زيادة الخاصية الخاصة بها DequeueCount .

تلقي الرسائل

عند قراءة رسالة من قائمة انتظار باستخدام أسلوب مثل ReceiveMessage، يتم إلغاء ترتيب الرسالة مؤقتا وتصبح غير مرئية مؤقتا لعمليات أخرى. تحدد مهلة الرؤية هذه المدة التي تظل فيها الرسالة غير مرئية. مهلة الرؤية الافتراضية هي 30 ثانية.

إذا لم تتم معالجة الرسالة قبل مرور مهلة الرؤية، يتم زيادة الخاصية الخاصة بها وإعادة إدراجها DequeueCount في نهاية قائمة الانتظار. تضمن إعادة إدراج نفس الرسالة إمكانية استرداد عملية أخرى لنفس الرسالة والمحاولة مرة أخرى.

يعين المثال التالي متغير invisibleTimeout إلى 10 ثوان، ثم يقرأ رسالتين من قائمة الانتظار.

# Set the amount of time you want to entry to be invisible after read from the queue
# If it is not deleted by the end of this time, it will show up in the queue again
$visibilityTimeout = [System.TimeSpan]::FromSeconds(10)

# Read the message from the queue, then show the contents of the message. 
# Read the next message, too.
$queueMessage = $queue.QueueClient.ReceiveMessage($visibilityTimeout)
$queueMessage.Value
$queueMessage = $queue.QueueClient.ReceiveMessage($visibilityTimeout)
$queueMessage.Value

يمكنك استرداد رسائل متعددة من قائمة الانتظار في وقت واحد باستخدام ReceiveMessages الأسلوب وتمرير وقيمة عدد صحيح لتحديد الحد الأقصى لعدد الرسائل التي سيتم إرجاعها.

# Set the amount of time you want to entry to be invisible after read from the queue
# If it is not deleted by the end of this time, it will show up in the queue again
$visibilityTimeout = [System.TimeSpan]::FromSeconds(10)

# Read the messages from the queue, then show the contents of the messages.
$queueMessage = $queue.QueueClient.ReceiveMessages(5,$visibilityTimeout)
$queueMessage.Value

رسائل النظرات الخاطفة

بالنسبة لحالات الاستخدام التي قد تتضمن قوائم انتظار مشتركة أو معاينة الرسائل دون تغيير رؤيتها، يمكنك استخدام الأسلوبين PeekMessage و PeekMessages . كما هو الحال مع المثال السابق ReceiveMessages ، يمكن النظر إلى رسائل متعددة في وقت واحد عن طريق تمرير قيمة عدد صحيح لتحديد الحد الأقصى لعدد الرسائل.

تستخدم الأمثلة التالية كلا من PeekMessage الأسلوبين و PeekMessages لاسترداد الرسائل من قائمة انتظار.

# Read the message from the queue, then show the contents of the message. 
$queueMessage = $queue.QueueClient.PeekMessage()
$queueMessage.Value

# Read the next four messages, then show the contents of the messages.
$queueMessage = $queue.QueueClient.PeekMessages(4)
$queueMessage.Value

حذف الرسائل من قائمة الانتظار

لمنع الحذف العرضي، يجب توفير الخاصيتين MessageId و PopReceipt قبل حذف رسالة نهائيا. وبسبب هذا المطلب، من الأسهل حذف رسالة باستخدام عملية من خطوتين.

أولا، أحضر الرسالة التالية في قائمة الانتظار عن طريق استدعاء الأسلوبين ReceiveMessage أو ReceiveMessages . لإنهاء إزالة الرسالة من قائمة الانتظار، مرر القيم التي تم الحصول عليها من الرسالة إلى DeleteMessage الأسلوب .

توضح هذه العملية في الأمثلة التالية.

# Set the amount of time you want to entry to be invisible after read from the queue
# If it is not deleted by the end of this time, it will show up in the queue again
$visibilityTimeout = [System.TimeSpan]::FromSeconds(10)

# Receive one message from the queue, then delete the message. 
$queueMessage = $queue.QueueClient.ReceiveMessage($visibilityTimeout)
$queue.QueueClient.DeleteMessage($queueMessage.Value.MessageId, $queueMessage.Value.PopReceipt)

# Receive four message from the queue, then delete the messages. 
$queueMessage = $queue.QueueClient.ReceiveMessages(4,$visibilityTimeout)
$queueMessage.Value | foreach { $queue.QueueClient.DeleteMessage($_.MessageId, $_.PopReceipt)}

حذف قائمة انتظار

لحذف قائمة انتظار وكافة الرسائل المضمنة فيها، قم باستدعاء QueueClient أسلوب الفئة Delete . يوضح المثال التالي كيفية حذف قائمة الانتظار المحددة المستخدمة في هذا التمرين.

# Delete the queue
Remove-AzStorageQueue -Name $queueName -Context $ctx

تنظيف الموارد

قم بإزالة مجموعة الموارد لحذف الأصول والموارد التي تم إنشاؤها في هذا التمرين. في هذه الحالة، يتم أيضا حذف حساب التخزين ومجموعة الموارد نفسها.

Remove-AzResourceGroup -Name $resourceGroup

الخطوات التالية

في هذه المقالة الإرشادية، تعرفت على إدارة Queue Storage الأساسية باستخدام PowerShell، بما في ذلك طريقة القيام بما يلي:

  • إنشاء ‏‫‏‏قائمة انتظار‬
  • استرداد قائمة الانتظار
  • إضافة رسائل
  • قراءة الرسائل
  • حذف الرسائل
  • حذف قائمة انتظار

أوامر cmdlets للتخزين Microsoft Azure PowerShell

Microsoft Azure Storage Explorer

  • Microsoft Azure Storage Explorer هو تطبيق مجاني مستقل من Microsoft يمكّنك من العمل بشكل مرئي مع بيانات Azure Storage على أنظمة التشغيل Windows و macOS و Linux.