ما هو Azure Service Bus؟

Azure Service Busهو وسيط رسائل مؤسسي مُدار بالكامل مع قوائم انتظار الرسائل وموضوعات النشر والاشتراك. يتم استخدام Service Bus لفصل التطبيقات والخدمات عن بعضها البعض، ما يوفر الفوائد التالية:

  • أعمال تتم موازنة أحمالها على مستوى العمال المتنافسين
  • توجيه ونقل البيانات والتحكم بأمان عبر حدود الخدمة والتطبيق
  • تنسيق أعمال المعاملات التي تتطلب درجة عالية من الموثوقية

نظرة عامة

يتم نقل البيانات بين التطبيقات والخدمات المختلفة باستخدام الرسائل. الرسالة هي حاوية مزينة ببيانات التعريف، وتحتوي على بيانات. يمكن أن تكون البيانات أي نوع من المعلومات، بما في ذلك البيانات المنظمة المشفرة مع الأشكال الشائعة مثل تلك التالية: JSON، XML، Apache Avro، النص العادي.

فيما يلي بعض سيناريوهات المراسلة الشائعة:

  • Messaging. نقل البيانات التجارية، مثل المبيعات أو أوامر الشراء أو المجلات أو حركات الجرد.

  • فصل التطبيقات. تحسين موثوقية وقابلية التطبيقات والخدمات. لا يتعين على المنتج والمستهلك أن يكونا متصلين بالإنترنت أو متاحين بسهولة في نفس الوقت. الحمل مستوٍ لدرجة أن ارتفاع حركة المرور لا يتجاوز الخدمة.

  • موازنة التحميل. السماح لعدة مستهلكين متنافسين بالقراءة من قائمة انتظار في نفس الوقت، حيث يحصل كل منهم بأمان على ملكية حصرية لرسائل محددة.

  • المواضيع والاشتراكات. تمكين 1:n العلاقات بين الناشرين والمشتركين، ما يسمح للمشتركين بتحديد رسائل معينة من دفق رسالة منشورة.

  • المعاملات. يسمح لك بالقيام بالعديد من العمليات، كل ذلك في نطاق المعاملة الذرية. على سبيل المثال، يمكن إجراء العمليات التالية في نطاق المعاملة.

    1. الحصول على رسالة من قائمة انتظار واحدة.
    2. نشر نتائج المعالجة إلى قائمة انتظار مختلفة أو أكثر.
    3. نقل رسالة الإدخال من قائمة الانتظار الأصلية.

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

  • جلسات عمل الرسائل. تنفيذ تنسيق واسع النطاق لسير العمل والتحويلات المتعددة التي تتطلب ترتيب رسائل صارم أو تأجيل الرسائل.

إذا كنت معتادًا على وسطاء الرسائل الآخرين مثل Apache ActiveMQ، فإن مفاهيم Service Bus تشبه ما تعرفه. بما أن Service Bus هي عرض منصة كخدمة (PaaS)، فإن الفرق الرئيسي هو أنك لا داعي للقلق بشأن الإجراءات التالية. يعتني Azure بتلك الأعمال من أجلكم.

  • القلق بشأن فشل الأجهزة
  • الحفاظ على أنظمة التشغيل أو المنتجات مصححة
  • وضع سجلات وإدارة مساحة القرص
  • معالجة النسخ الاحتياطية
  • تعطل في آلة احتياطية

المفاهيم

يناقش هذا القسم المفاهيم الأساسية حول ناقل الخدمة.

الصفوف

يتم إرسال الرسائل وتلقيها من قوائم الانتظار. تقوم قوائم الانتظار بتخزين الرسائل حتى يتوفر التطبيق المتلقي لتلقيها ومعالجتها.

رسم تخطيطي يوضح قائمة انتظار ناقل خدمة Microsoft Azure مع مرسل وجهاز استقبال يرسل الرسائل ويستقبلها.

يتم ترتيب الرسائل في قوائم الانتظار ووضع ختم زمني عند الوصول. بمجرد قبول الوسيط للرسالة، يتم الاحتفاظ بالرسالة دائما بشكل دائم في مساحة تخزين ثلاثية زائدة عن الحاجة، تنتشر عبر مناطق التوفر إذا كانت مساحة الاسم ممكنة للمنطقة. يحتفظ ناقل خدمة Microsoft Azure بالرسائل في الذاكرة أو التخزين المتقلب حتى يبلغ العميل عنها على أنها مقبولة.

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

إشعار

لمقارنة قوائم انتظار ناقل الخدمة مع قوائم انتظار «التخزين»، راجع قوائم انتظار التخزين وقوائم انتظار ناقل الخدمة - أوجه التشابه والاختلاف.

الموضوعات

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

رسم تخطيطي يوضح موضوع ناقل خدمة Microsoft Azure مع مرسل واحد وعدة أجهزة استقبال.

يمكن أن تحتوي الموضوعات على اشتراكات مستقلة متعددة، والتي ترتبط بالموضوع وتعمل تمامًا مثل قوائم الانتظار من جانب المتلقي. يمكن للمشترك في موضوع ما تلقي نسخة من كل رسالة يتم إرسالها إلى هذا الموضوع. الاشتراكات هي كيانات مسماة. الاشتراكات دائمة بشكل افتراضي، ولكن يمكن تكوينها لتنتهي صلاحيتها ثم يتم حذفها تلقائيًا. عبر واجهة برمجة تطبيقات Java Message Service (JMS)، يتيح لك ناقل الخدمة Premium إنشاء اشتراكات متنوعة موجودة طوال مدة الاتصال.

يمكنك تحديد قواعد الاشتراك. تحتوي قاعدة الاشتراك على عامل تصفية لتعريف شرط للرسالة المراد نسخها إلى الاشتراك وإجراء اختياري يمكنه تعديل بيانات تعريف الرسالة. لمزيد من المعلومات، راجع عوامل تصفية الموضوع وإجراءاته. هذه الميزة مفيدة في السيناريوهات التالية:

  • لا تريد اشتراكًا لتلقي كافة الرسائل المرسلة إلى موضوع.
  • تريد وضع علامة على الرسائل ببيانات تعريف إضافية عند مرورها عبر اشتراك.

إشعار

لمزيد من المعلومات حول قوائم الانتظار والموضوعات، راجع قوائم انتظار ناقل الخدمة والمواضيع والاشتراكات.

مساحة الاسم

مساحة الاسم هي حاوية لكافة مكونات المراسلة (قوائم الانتظار والمواضيع). يمكن أن تحتوي مساحة الاسم على قائمة انتظار وموضوع واحد أو أكثر وغالبا ما تعمل كحاوية تطبيق.

يمكن مقارنة مساحة الاسم بخادم في مصطلحات الوسطاء الآخرين، ولكن المفاهيم ليست مكافئة مباشرة. مساحة اسم Service Bus هي شريحة السعة الخاصة بك من كتلة كبيرة تتكون من عشرات الأجهزة الظاهرية النشطة. وهو يمتد اختياريا على ثلاث مناطق توفر Azure. لذلك، يمكنك الحصول على جميع مزايا التوفر والمتانة لتشغيل وسيط الرسائل على نطاق هائل. ولا داعي للقلق بشأن التعقيدات الكامنة. Service Bus هو المراسلة بلا خادم.

ميزات متقدمة

يشتمل "ناقل الخدمة" على ميزات متقدمة تمكنك من حل مشاكل المراسلة الأكثر تعقيداً. وتصف الأقسام التالية هذه الميزات الرئيسية:

جلسات عمل الرسائل

لتحقيق ضمان الدخول الأول والإخراج الأول (FIFO) في معالجة الرسائل في قوائم انتظار أو اشتراكات ناقل خدمة Microsoft Azure، استخدم جلسات العمل. يمكن أيضا استخدام جلسات العمل في تنفيذ أنماط استجابة الطلب. يمكن نمط استجابة الطلب تطبيق المرسل من إرسال طلب ويوفر طريقة للمستلم لإرسال استجابة بشكل صحيح إلى تطبيق المرسل. لمزيد من المعلومات، راجع جلسات عمل الرسائل.

إعادة التوجيه التلقائي

تمكنك ميزة إعادة التوجيه التلقائي من ربط قائمة انتظار أو اشتراك بقائمة انتظار أو موضوع آخر يشكل جزءا من نفس مساحة الاسم. عند تمكين إعادة التوجيه التلقائي، يقوم ناقل خدمة Azure تلقائيًا بإزالة الرسائل الموضوعة في قائمة الانتظار الأولى أو الاشتراك (المصدر)، ويضعها في قائمة الانتظار الثانية أو الموضوع (الوجهة). لمزيد من المعلومات، راجع تسلسل كيانات ناقل خدمة Microsoft Azure مع إعادة التوجيه التلقائي

الحروف غير المستخدمة

توفر قوائم انتظار ناقل خدمة Microsoft Azure واشتراكات الموضوع قائمة فرعية ثانوية، تسمى قائمة انتظار غير مستخدمة (DLQ). تحتوي قائمة انتظار الرسائل غير المستخدمة على الرسائل التي لا يمكن تسليمها إلى أي جهاز استقبال، أو الرسائل التي لا يمكن معالجتها. يمكنك بعد ذلك إزالة الرسائل من قائمة انتظار الأحرف غير المستخدمة وفحصها. قد يقوم التطبيق، بمساعدة عامل تشغيل، بتصحيح المشكلات وإعادة إرسال الرسالة، وتسجيل حقيقة وجود خطأ، واتخاذ إجراء تصحيحي. لمزيد من المعلومات، اطلع على "Overview of Service Bus dead-letter queues".

التوصيل المجدول

يمكنك إرسال رسائل إلى قائمة انتظار أو موضوع بغرض المعالجة المؤجلة. على سبيل المثال، لجدولة مهمة لتصبح متاحة للمعالجة بواسطة نظام في وقت معين. لمزيد من المعلومات، اطلع على "Scheduled messages".

تأجيل الرسالة

عندما يتلقى عميل قائمة انتظار أو اشتراك رسالة يرغب في معالجتها، ولكن المعالجة غير ممكنة حاليًا بسبب ظروف خاصة داخل التطبيق، يمكن للكيان تأجيل استرداد الرسالة إلى نقطة لاحقة. تبقى الرسالة في قائمة الانتظار أو الاشتراك، ولكن يتم وضعها جانبًا. لمزيد من المعلومات، اطلع على "Message deferral".

الحركات

تجمع المعاملة بين عمليتين أو أكثر معًا في نطاق تنفيذ. يدعم ناقل خدمة Microsoft Azure عمليات التجميع مقابل كيان مراسلة واحد (قائمة انتظار، موضوع، اشتراك) ضمن نطاق عملية. لمزيد من المعلومات، اطلع على "Overview of Service Bus transaction processing".

عوامل التصفية والإجراءات

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

الحذف التلقائي في حالة الخمول

الحذف التلقائي في حالة الخمول يمكنك من تحديد فاصل زمني خامل يتم بعده حذف قائمة انتظار تلقائيًا. تتم إعادة تعيين الفاصل الزمني عند وجود حركة مرور في قائمة الانتظار. يبلغ الحد الأدنى للمدة 5 دقائق.

الكشف عن التكرارات

عند حدوث خطأ يتسبب في أن يكون لدى العميل أي شك حول نتيجة عملية الإرسال، فإن ميزة الكشف عن التكرار تزيل الشك من هذه المواقف عن طريق تمكين المرسل من إعادة إرسال نفس الرسالة، وتتجاهل قائمة الانتظار أو الموضوع أي نسخ مكررة. لمزيد من المعلومات، اطلع على "Duplicate detection".

الأمان

يدعم ناقل خدمة Microsoft Azure بروتوكولات الأمان مثل توقيعات الوصول المشترك (SAS) والتحكم في الوصول استنادا إلى الدور (RBAC)والهويات المدارة لموارد Azure.

يدعم ناقل الخدمة بروتوكول Advanced Message Queuing Protocol (AMQP) 1.0 القياسي وبروتوكولات HTTP / REST.

التعافي من الكوارث في المناطق الجغرافية

عندما تواجه مناطق Azure أو مراكز البيانات أوقات تعطل، فإن ميزة الإصلاح بعد كارثة جغرافية تتيح لمعالجة البيانات إمكانية متابعة العمل في منطقة أو مركز بيانات مختلف.

إشعار

لمزيد من المعلومات، راجع الميزات المتقدمة لناقل خدمة Azure.

الامتثال للمعايير والبروتوكولات

بروتوكول السلك الأساسي لـ Service Bus هو Advanced Messaging Queueing Protocol (AMQP) 1.0، وهو معيار ISO/IEC مفتوح. يسمح للعملاء بكتابة التطبيقات التي تعمل ضد Service Bus والوسطاء المحليين مثل ActiveMQ أو RabbitMQ. يوفر دليل بروتوكول AMQP معلومات مفصلة في حالة رغبتك في إنشاء مثل هذا التجريد.

Service Bus Premium متوافقة تمامًا مع Java/Jakarta EE Java Message Service (JMS) 2.0 API. و، يدعم Service Bus Standard المجموعة الفرعية JMS 1.1 التي تركز على قوائم الانتظار. JMS هو التجريد المشترك لوسطاء الرسائل ويتكامل مع العديد من التطبيقات والأطر، بما في ذلك إطار Spring المعروف. للتبديل من الوسطاء الآخرين إلى Azure Service Bus، تحتاج فقط إلى إعادة إنشاء طبولوجيا قوائم الانتظار والمواضيع، وتغيير تبعيات وتكوين موفر العميل. على سبيل المثال، راجع دليل ترحيل ActiveMQ.

مكتبات العميل

مكتبات عميل Service Bus معتمدة بالكامل ومتوفرة عبر SDK Azure.

بروتوكول Azure Service Bus' الأساسي هو AMQP 1.0 ويمكن استخدامه من أي عميل بروتوكول متوافق مع AMQP 1.0. لدى العديد من عملاء AMQP مفتوحة المصدر نماذج توضح بوضوح إمكانية التشغيل المتداخل Service Bus. راجع دليل بروتوكول AMQP 1.0 لفهم كيفية استخدام ميزات Service Bus مع عملاء AMQP 1.0 مباشرة.

اللغة مكتبة
Java Apache Qpid Proton-J
C/C++ Azure uAMQP C, Apache Qpid Proton-C
Python Azure uAMQP for Python, Apache Qpid Proton Python
PHP Azure uAMQP for PHP
Ruby Apache Qpid Proton Ruby
انتقال Azure Go AMQP, Apache Qpid Proton Go
C#/F#/VB AMQP .NET Lite, Apache NMS AMQP
JavaScript/Node Rhea

التكامل

يتكامل Service Bus تمامًا مع العديد من خدمات Microsoft وAzure، على سبيل المثال:

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

للبدء في استخدام المراسلة Service Bus، راجع المقالات التالية: