سحب التسليم باستخدام HTTP

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

إشعار

يساعدك هذا المستند على البدء في استخدام قدرات Event Grid التي تستخدم بروتوكول HTTP. هذه المقالة مناسبة للمستخدمين الذين يحتاجون إلى دمج التطبيقات على السحابة. إذا كنت بحاجة إلى توصيل بيانات جهاز IoT، فشاهد نظرة عامة على ميزة MQTT Broker في Azure Event Grid.

CloudEvents

تقبل موضوعات مساحة اسم Event Grid الأحداث التي تتوافق مع مواصفات CloudEvents 1.0 القياسية المفتوحة ل CloudEvents 1.0 باستخدام ربط بروتوكول HTTP بتنسيق JSON.

راجع مفاهيم CloudEvents لمزيد من المعلومات.

CloudEvents con وضع الخيمة s

تحدد مواصفات CloudEvents ثلاثة con وضع الخيمة يمكنك استخدامها: ثنائية ومنظمة ومدفعية.

هام

مع أي con وضع الخيمة يمكنك تبادل النص (JSON، النص/*، إلخ) أو بيانات الحدث المرمزة الثنائية. لا يتم استخدام con وضع الخيمة الثنائي بشكل حصري لإرسال البيانات الثنائية.

لا تتعلق con وضع الخيمة s بالترميز الذي تستخدمه، ثنائي أو نصي، ولكن حول كيفية وصف بيانات الحدث وبيانات التعريف الخاصة به وتبادلها. يستخدم con وضع الخيمة المنظم بنية واحدة، على سبيل المثال، كائن JSON، حيث تكون كل من سمات السياق وبيانات الحدث معا في حمولة HTTP. يفصل con وضع الخيمة الثنائي سمات السياق، التي تم تعيينها إلى رؤوس HTTP، وبيانات الحدث، وهي حمولة HTTP المشفرة وفقا لقيمة نوع الوسائط في Content-Type.

راجع cloudEvents con وضع الخيمة s للحصول على مزيد من المعلومات.

الرسائل والأحداث

عادة ما يحمل CloudEvent بيانات الحدث التي تعلن عن حدوث في نظام، أي تغيير حالة النظام. ومع ذلك، يمكنك نقل أي نوع من البيانات عند استخدام CloudEvents. على سبيل المثال، قد تحتاج إلى استخدام تنسيق تبادل CloudEvents لإرسال رسالة أمر لطلب إجراء إلى تطبيق انتقال البيانات من الخادم. مثال آخر هو عند توجيه الرسائل من وسيط MQTT الخاص ب Event Grid إلى موضوع. ضمن هذا السيناريو، تقوم بتوجيه رسالة MQTT ملفوفة في مغلف CloudEvents.

تسليم السحب

مع تسليم السحب، يتصل التطبيق الخاص بك ب Event Grid لقراءة CloudEvents باستخدام دلالات تشبه قائمة الانتظار.

يوفر تسليم السحب مزايا استهلاك الحدث هذه:

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

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

  • استهلاك الأحداث عبر ارتباط خاص بحيث تستخدم بياناتك مساحة IP خاصة.

إشعار

  • توفر مساحات الأسماء نموذج مورد أبسط يتميز بنوع واحد من الموضوع. حاليا، تدعم Event Grid نشر أحداث التطبيق الخاصة بك من خلال مواضيع مساحة الاسم. لا يمكنك استهلاك الأحداث من خدمات Azure أو أنظمة SaaS الشريكة باستخدام مواضيع مساحة الاسم. لا يمكنك أيضا إنشاء مواضيع النظام أو موضوعات المجال أو موضوعات الشريك في مساحة الاسم.
  • تدعم مواضيع مساحة الاسم تنسيق CloudEvents JSON.

اشتراكات أحداث قائمة الانتظار

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

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

رسم تخطيطي عالي المستوى للناشر والمستهلك باستخدام اشتراك حدث. يستخدم المستهلك تسليم السحب.

سحب عمليات التسليم

يستخدم التطبيق الخاص بك العمليات التالية عند العمل مع تسليم السحب.

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

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

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

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

النطاق الذي يتم تشغيل عمليات تسليم السحب عليه

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

شكل البيانات عند تلقي الأحداث باستخدام تسليم السحب

عند تسليم الأحداث باستخدام تسليم السحب، تتضمن Event Grid صفيفا من الكائنات التي تتضمن بدورها عناصر event و brokerProperties . قيمة خاصية الحدث هي CloudEvent التي تم تسليمها في con منظم وضع الخيمة. يحتوي كائن brokerProperties على رمز التأمين المقترن ب CloudEvent الذي تم تسليمه. كائن json التالي هو نموذج استجابة من عملية تلقي تقوم بإرجاع حدثين:

{
    "value": [
        {
            "brokerProperties": {
                "lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDXYS23Z+5Hq754VqQjxywE",
                "deliveryCount": 2
            },
            "event": {
                "specversion": "1.0",
                "id": "A234-1234-1235",
                "source": "/mycontext",
                "time": "2018-04-05T17:31:00Z",
                "type": "com.example.someeventtype",
                "data": "some data"
            }
        },
        {
            "brokerProperties": {
                "lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDLeaL+nRJLNq3/5NXd/T0b",
                "deliveryCount": 1
            },
            "event": {
                "specversion": "1.0",
                "id": "B688-1234-1235",
                "source": "/mycontext",
                "type": "com.example.someeventtype",
                "time": "2018-04-05T17:31:00Z",
                "data": {
                    "somekey" : "value",
                    "someOtherKey" : 9
                }
            }
        }
    ]
}

دفع التسليم وسحبه

تدعم Event Grid دفع تسليم الحدث وسحبه باستخدام HTTP. مع تسليم الدفع، يمكنك تحديد وجهة في اشتراك حدث أو إخطار على الويب أو خدمة Azure، والتي ترسل إليها Event Grid الأحداث. مع تسليم السحب، تتصل تطبيقات المشترك ب Event Grid لاستهلاك الأحداث. يتم دعم تسليم السحب للمواضيع في مساحة اسم شبكة الأحداث.

هام

يتم دعم مراكز الأحداث كوجهة للاشتراكات في موضوعات مساحة الاسم. في الإصدارات القادمة، ستدعم مساحات أسماء شبكة الأحداث جميع الوجهات المتوفرة حاليا في Event Grid Basic جنبا إلى جنب مع وجهات إضافية.

رسم تخطيطي عالي المستوى يوضح تسليم الدفع وتسليم السحب مع نوع الموارد المعنية.

متى تستخدم تسليم الدفع مقابل تسليم السحب

فيما يلي إرشادات عامة لمساعدتك في تحديد وقت استخدام التسليم السحب أو الدفع.

تسليم السحب

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

دفع التسليم

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

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

توفر لك المقالات التالية معلومات حول كيفية استخدام Event Grid أو تزويدك بمعلومات إضافية حول المفاهيم.