طريقة استخدام 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.