كيفية استخدام تخزين قائمة الانتظار من Ruby
تلميح
شغل Microsoft Azure Storage Explorer
يُعد Microsoft Azure Storage Explorer عبارة عن تطبيق مجاني مستقل من Microsoft يمكّنك من العمل بشكل مرئي مع بيانات تخزين Azure على أنظمة التشغيل Windows وmacOS وLinux.
نظرة عامة
يوضح لك هذا الدليل كيفية تنفيذ السيناريوهات الشائعة باستخدام خدمة Microsoft Azure Queue Storage. تتم كتابة العينات باستخدام واجهة برمجة تطبيقات Ruby Azure. تشمل السيناريوهات التي تمت تغطيتها إدراج و إلقاء نظرة خاطفة و الحصول على و حذف رسائل قائمة الانتظار، بالإضافة إلى إنشاء وحذف قوائم الانتظار.
ما هو تخزين قائمة الانتظار؟
يعتبر تخزين Azure Queue خدمة لتخزين أعداد كبيرة من الرسائل التي يمكن الوصول إليها من أي مكان في العالم عبر مكالمات مصادق عليها باستخدام HTTP أو HTTPS. يُمكن أن يصل حجم رسالة قائمة انتظار واحدة إلى 64 KB، ويمكن أن تحتوي قائمة الانتظار على ملايين الرسائل، حتى الحد الأقصى للسعة الإجمالية لحساب التخزين. غالباً ما يُستخدم تخزين قائمة الانتظار لإنشاء تراكم من العمل لمعالجته بشكل غير متزامن.
المفاهيم المتعلقة بخدمة قائمة الانتظار
تحتوي خدمة قائمة الانتظار Azure على المكونات التالية:

حساب التخزين:تتم جميع إجراءات الوصول إلى Azure Storage من خلال حساب تخزين. لمزيد من المعلومات حول حسابات التخزين، راجع «Storage account overview».
قائمة الانتظار: تحتوي قائمة الانتظار على مجموعة من الرسائل. يجب أن تكون كافة الرسائل في قائمة انتظار. لاحظ أن اسم قائمة الانتظار يجب أن تكون بحروف صغيرة. من أجل الحصول على معلومات حول تسمية قوائم الانتظار، راجعتسمية قوائم الانتظار وبيانات التعريف.
رسالة: يصل حجم الرسالة، بأي تنسيق، إلى 64 كيلوبايت. الحد الأقصى للوقت الذي يُمكن أن تبقى فيه الرسالة في قائمة الانتظار هو 7 أيام. بالنسبة إلى الإصدار بتاريخ 2017-07-29 أو الأحدث، يمكن أن تكون أقصى مدة للبقاء أي رقم إيجابي، أو -1 يشير إلى أن الرسالة لا تنتهي صلاحيتها. إذا حُذفت هذه المعلمة، فإن مدة البقاء الافتراضية هي سبعة أيام.
تنسيق عنوان URL:يُمكن عنونة قوائم الانتظار باستخدام تنسيق عنوان URL التالي: http://
<storage account>.queue.core.windows.net/<queue>عنوان URL التالي يتناول قائمة انتظار في المخطط:
http://myaccount.queue.core.windows.net/incoming-orders
إنشاء حساب تخزين Azure
تتمثل أسهل طريقة من أجل إنشاء حساب تخزين Azure في استخدام مدخل Microsoft Azure. لمعرفة المزيد، اطلع على إنشاء حساب تخزين.
يُمكنك أيضاً إنشاء حساب تخزين Azure باستخدام Azure PowerShell أو Azure CLI أو موفر موارد تخزين Azure ل .NET.
إذا كنت تُفضل عدم إنشاء حساب تخزين في Azure في هذا الوقت، فيُمكنك أيضاً استخدام محاكي تخزين Azurite لتشغيل التعليمات البرمجية واختبارها في بيئة محلية. لمزيد من المعلومات، راجع استخدام محاكي Azurite لتطوير Azure Storage المحلي.
قم بإنشاء تطبيق Ruby
قم بإنشاء تطبيق Ruby. للحصول على التعليمات، راجع إنشاء تطبيق Ruby في App Service على Linux.
تكوين التطبيق للوصول إلى مساحة التخزين
لاستخدام Azure Storage، تحتاج إلى تنزيل حزمة Ruby Azure واستخدامها، التي تتضمن مجموعة من المكتبات الملائمة التي تتصل بالخدمات التخزينية REST.
استخدام RubyGems للحصول على الحزمة
- استخدم واجهة سطر الأوامر مثل PowerShell (Windows), Terminal (Mac), أو Bash (Unix).
- اكتب
gem install azureفي نافذة الأوامر لتثبيت gem وتبعياته.
استيراد الحزمة
استخدم محرر النصوص المفضل لديك، أضف ما يلي إلى أعلى ملف Ruby حيث تنوي استخدام التخزين:
require "azure"
إعداد اتصال Azure Storage
تقرأ وحدة Azure Storage المتغيرات البيئية AZURE_STORAGE_ACCOUNTوAZURE_STORAGE_ACCESS_KEY للحصول على معلومات مطلوبة للاتصال بحساب Azure Storage خاصتك. إذا لم يتم تعيين متغيرات البيئة هذه، فيجب عليك تحديد معلومات الحساب قبل استخدام Azure::QueueService مع الأكواد التالية:
Azure.config.storage_account_name = "<your azure storage account>"
Azure.config.storage_access_key = "<your Azure storage access key>"
للحصول على هذه القيم من حساب تخزين كلاسيكي أو مدير الموارد في مدخل Microsoft Azure:
- سجّل الدخول إلى مدخل Microsoft Azure.
- انتقل إلى حساب التخزين الذي تريد استخدامه.
- في شفرة الإعدادات على اليمين، انقر فوق Access Keys.
- في شفرة مفاتيح Access التي تظهر، سترى مفتاح الوصول 1 ومفتاح الوصول 2. يمكنك استخدام أياً منهما.
- انقر فوق رمز النسخ لنسخ المفتاح إلى الحافظة.
طريقة إنشاء قائمة انتظار
تقوم التعليمة البرمجية التالية بإنشاء Azure::QueueService عنصر يمكنك من العمل مع قوائم الانتظار.
azure_queue_service = Azure::QueueService.new
استخدم الطريقة create_queue() لإنشاء قائمة انتظار بالاسم المحدد.
begin
azure_queue_service.create_queue("test-queue")
rescue
puts $!
end
كيفية: إدراج رسالة في قائمة انتظار
لإدراج رسالة في قائمة انتظار، استخدم طريقة create_message() لإنشاء رسالة جديدة وإضافتها إلى قائمة الانتظار.
azure_queue_service.create_message("test-queue", "test message")
كيفية: نظرة خاطفة على الرسالة التالية
يمكنك إلقاء نظرة خاطفة على الرسالة الموجودة في مقدمة قائمة الانتظار دون إزالتها من قائمة الانتظار عن طريق الاتصال بطريقة peek_messages(). افتراضيًا، peek_messages() يلقي نظرة خاطفة على رسالة واحدة. يمكنك أيضًا تحديد عدد الرسائل التي تريد إلقاء نظرة خاطفة عليها.
result = azure_queue_service.peek_messages("test-queue",
{:number_of_messages => 10})
كيفية القيام بما يلي: إلغاء انتظار الرسالة التالية
يمكنك إزالة رسالة من قائمة انتظار في خطوتين.
- عندما تتصل بـ
list_messages()، ستحصل على الرسالة التالية في قائمة انتظار بشكل افتراضي. يمكنك أيضًا تحديد عدد الرسائل التي تريد الحصول عليها. تصبح الرسائل التي يتم إرجاعها منlist_messages()غير مرئية لأي رسائل أخرى لقراءة التعليمات البرمجية من قائمة الانتظار هذه. يمكنك تمرير مهلة الرؤية في ثوان كمعلمة. - لإنهاء إزالة الرسالة من قائمة الانتظار، يجب عليك أيضا الاتصال
delete_message().
تؤكد هذه العملية المكونة من خطوتين لإزالة رسالة أنه عندما تفشل التعليمات البرمجية في معالجة رسالة بسبب فشل الأجهزة أو البرامج، يمكن أن تحصل حالة أخرى من التعليمات البرمجية على نفس الرسالة ثم تحاول مرة أخرى. تستدعي تعليماتك البرمجية delete_message() مباشرة بعد معالجة الرسالة.
messages = azure_queue_service.list_messages("test-queue", 30)
azure_queue_service.delete_message("test-queue",
messages[0].id, messages[0].pop_receipt)
كيفية: تغيير محتويات رسالة في قائمة الانتظار
يمكنك تغيير محتويات رسالة في مكان في قائمة الانتظار. تستخدم الشفرة التالية طريقة update_message() لتحديث رسالة. ستعيد الطريقة tuple الذي يحتوي على إيصال POP لرسالة قائمة الانتظار وقيمة UTC DateTime التي تمثل متى ستكون الرسالة مرئية في قائمة الانتظار.
message = azure_queue_service.list_messages("test-queue", 30)
pop_receipt, time_next_visible = azure_queue_service.update_message(
"test-queue", message.id, message.pop_receipt, "updated test message",
30)
كيفية: خيارات إضافية لتعطيل الرسائل
هناك طريقتان يمكنك بهما تخصيص استرداد الرسالة من قائمة الانتظار.
- يمكنك الحصول على دفعة من الرسالة.
- يمكنك تعيين مهلة عدم الرؤية الأطول أو الأقصر، مما يسمح للشفرة الخاصة بك بوقت أكثر أو أقل لمعالجة كل رسالة بالكامل.
يستخدم مثال الرمز التالي طريقة list_messages() لتلقي 15 رسالة في مكالمة واحدة. ثم يقوم بطباعة وحذف كل رسالة. كما أنه يحدد مهلة الإخفاء بخمس دقائق لكل رسالة.
azure_queue_service.list_messages("test-queue", 300
{:number_of_messages => 15}).each do |m|
puts m.message_text
azure_queue_service.delete_message("test-queue", m.id, m.pop_receipt)
end
كيفية: الحصول على طول قائمة الانتظار
يمكنك الحصول على تقدير لعدد الرسائل في قائمة الانتظار. ترجع طريقة get_queue_metadata() عدد الرسائل التقريبي و بيانات التعريف لقائمة الانتظار الأخرى.
message_count, metadata = azure_queue_service.get_queue_metadata(
"test-queue")
كيفية: حذف قائمة انتظار
لحذف قائمة انتظار وكافة الرسائل المضمنة فيه، استدعىي الأسلوب delete_queue()على عنصر قائمة الإنتظار.
azure_queue_service.delete_queue("test-queue")
الخطوات التالية
الآن بعد أن تعلمت أساسيات تخزين قائمة الانتظار، اتبع هذه الروابط للتعرف على مهام التخزين الأكثر تعقيدًا.
- قم بزيارة مدونة فريق Azure Storage
- راجع مستودع Azure SDK لـRuby على GitHub
لإجراء مقارنة بين تخزين قائمة انتظار Azure التي تمت مناقشتها في هذه المقالة وقوائم انتظار ناقل خدمة Azure التي تمت مناقشتها في كيفية استخدام قوائم انتظار ناقل الخدمة، راجع قوائم انتظار تخزين قائمة انتظار Azure وقوائم انتظار ناقل الخدمة - مقارنة وتباين