في هذا البرنامج التعليمي، ستتعلم على كيفية الاستفادة من ميزة تصفية الرسائل لخدمة Amazon Simple Notification Service (SNS). ميزة تصفية الرسائل لا تمكّن نقاط النهاية المشتركة في موضوع SNS إلا من استلام المجموعة الفرعية من رسائل الموضوعات المهمة بالنسبة لهم.

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

كما تعلمنا في البرنامج التعليمي إرسال Fanout Event Notifications، سنستخدم نمط رسائل مخرج متشعب باستخدام SNS وSQS لفصل موقع الويب عن الأنظمة الخلفية. للحصول على إشعارات الأحداث على النظام الخلفي المناسب، يمكنك إنشاء موضوع منفصل لكل نوع طلب عرض أسعار ثم إضافة منطق توجيه رسائل إلى الناشر الخاص بك. إلا أن هذا الخيار يؤدي إلى ناشرين شديدي التعقيد وانتشار الموضوعات ونفقات إضافية في توفير موضوعات SNS وإدارتها. تصفية رسائل SNS أسهل بكثير!

ستستخدم Amazon SNS وAmazon Simple Queue Service (SQS) في هذا البرنامج التعليمي. كلتا الخدمتين ضمن طبقة AWS المجانية.

 

تصفية الرسائل على AWS تستلزم وجود حساب

إنشاء حساب مجاني

تتضمن طبقة AWS المجانية 1000000 ناشر لخدمة Amazon Simple Notification Service وتتضمن 1000000 طلب لخدمة Amazon Simple Queue Service.

عرض تفاصيل الطبقة المجانية لخدمة AWS »‏

 

خطوتك الأولى ستكون إنشاء موضوع بخدمة Amazon SNS لنشر رسائل عندما يتم تقديم طلبات عروض أسعار على موقع ويب خاص التأمين. العملاء المتوقعون قد يكونون من نوعية التأمين على السيارات أو على القوارب أو الحياة.  


أ. عندما تنقر هنا، ستفتح وحدة الإدارة في AWS بنافذة متصفح جديدة، ومن ثمّ يمكنك إبقاء هذا الدليل المُفصّل مفتوحًا. عندما تقوم الشاشة بالتحميل، قم بإدخال اسم المستخدم وكلمة المرور لتبدأ. ثم اكتبالإشعارفي شريط البحث وحدد Simple Notification Service لفتح وحدة التحكم في الخدمة.

tmt_filter-messages-sent-to-topics_1a

(انقر للتكبير)

tmt_filter-messages-sent-to-topics_1a

ب.  عندما تظهر صفحة وحدة تحكم SNS المنتقل إليها، فانقر فوق البدء بنظرة عامة. إن لم تظهر هذه الصفحة، فانتقل إلى الخطوة التالية.

1b-console-home

(انقر للتكبير)

1b-console-home

ج.  انقر فوق الموضوعات بالقائمة التي بالجانب الأيمن.

1c-create-topic-nav-open

(انقر للتكبير)

1c-dashboard

د.  انقر فوق إنشاء موضوع.

 

1d-No-topics

(انقر للتكبير)

1d-No-topics

هـ.  في الحقل اسم الموضوع، اكتب Insurance-Quote-Requests، ثم مرر لأسفل للنقر فوق إنشاء موضوع.

 

1e-create-topic-nav-closed

(انقر للتكبير)

1e-create-topic-nav-closed

و.  الموضوع الجديد يظهر على صفحة تفاصيل الموضوع.

 

1f-topic-insurence-quote-request-created-success

(انقر للتكبير)

1f-topic-insurence-quote-request-created-success

يقوم كل نظام مبيعات تأمين بسحب طلبات عروض الأسعار من قائمة انتظار رسائل SQS المقابلة لها المشتركة في موضوع SNS.

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

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


أ. انقر هنا لفتح وحدة تحكم Amazon SQS في نافذة متصفح جديدة. إذا ظهرت صفحة SQS المنتقل إليها، فانقر فوق بدء الاستخدام الآن. وإن لم تظهر، فانتقل إلى الخطوة التالية.

 

tmt_filter-messages-sent-to-topics_2a

(انقر للتكبير)

tmt_filter-messages-sent-to-topics_2a

ب.  في الصفحةإنشاء قائمة انتظار جديدة، أدخلVehicle-Insurance-Quotes في الحقلاسم قائمة الانتظار.

احتفظ بتحديد قائمة انتظار قياسية وانقر فوق Quick-Create Queue.

 

tmt_filter-messages-sent-to-topics_2b

(انقر للتكبير)

tmt_filter-messages-sent-to-topics_2b

ج.  انقر فوق إنشاء قائمة انتظار جديدة وكرر الخطوة 2ب لإنشاء قائمتى انتظار أخريين:
Life-Insurance-Quotes
 وAll-Quotes.

 

tmt_filter-messages-sent-to-topics_2c

(انقر للتكبير)

tmt_filter-messages-sent-to-topics_2c

د.  قوائم الانتظار الثلاث موجودة في وحدة تحكم SQS.

 

tmt_filter-messages-sent-to-topics_2d

(انقر للتكبير)

tmt_filter-messages-sent-to-topics_2d

الآن قد أنشأت ثلاث قوائم انتظار Amazon SQS، تحتاج إلى الاشتراك لها في الموضوع Amazon SNS الذي يقوم بإرسال طلبات عروض أسعار التأمين الجديدة.


أ.  من قائمة قوائم الانتظار، حدد قائمة الانتظار Vehicle-Insurance-Quotes وقائمة الانتظار Life-Insurance-Quotes وقائمة الانتظار All-Quotes.

انقر فوقإجراءات قائمة الانتظار وحدد الاشتراك لقائمة الانتظار في موضوعSNS .

 

 

tmt_filter-messages-sent-to-topics_3a

(انقر للتكبير)

tmt_filter-messages-sent-to-topics_3a

ب.  يتم عرض مربع الحوارالاشتراك في موضوع. من القائمة المنسدلةاختيار موضوع، حدد الموضوع Insurance-Quote-Requestsالذي تريد الاشتراك لقوائم الانتظار الثلاثة فيه. نظرًا لأنك قد أنشأت موضوع SNS من نفس الحساب، فإنه يظهر في القائمة.

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

 

 

tmt_filter-messages-sent-to-topics_3b

(انقر للتكبير)

tmt_filter-messages-sent-to-topics_3b

ج.  اترك منطقة الموضوع بلا تغيير وانقر فوقاشتراك.  

 

 

tmt_filter-messages-sent-to-topics_3c

(انقر للتكبير)

tmt_filter-messages-sent-to-topics_3c

د.  يتم عرض مربع الحوار نتيجة الاشتراك في الموضوع. انقر فوق موافق.

tmt_filter-messages-sent-to-topics_3d

(انقر للتكبير)

tmt_filter-messages-sent-to-topics_3d

الآن قد تم إنشاء جميع موارد SNS وSQS، وتستعد الآن إلى تعيين سياسات التصفية على اشتراكات SNS الخاصة بك. سياسة التصفية هي مستند JSON بسيط، يتم تعيينه كسمة لاشتراك SNS، يعرّف نوع إشعار المشترك المهتم به.

الاشتراكات التي بلا سياسات تصفية ستتلقى جميع الرسائل المنشورة على موضوع SNS وبالتالي لست في حاجة إلى تعيين سياسة تصفية لقائمة الانتظار All-Quotes الخاصة بهذا السيناريو.


أ.  عُد إلى وحدة تحكم Amazon SNS في النافذة الأخرى من متصفحك وانقر فوق الموضوعات للبحث في قائمة تضم جميع الموضوعات في المنطقة.

انقر فوق اسم الموضوع Insurance-Quote-Requests في القائمة.  

4a-topic-list

(انقر للتكبير)

4a-topic-list

ب.  هذا ينقلك إلى صفحة تفاصيل الموضوع Insurance-Quote-Requests التي منها ستتمكن من رؤية جميع قوائم انتظار SQS المشتركة في موضوع SNS هذا. حدد قائمة الانتظار Vehicle-Insurance-Quotes ثم انقر فوق تحرير.

4b-topic-detail-insurance-quote-request

(انقر للتكبير)

4b-topic-detail-insurance-quote-request

ج.  هذا سينقلك إلى الصفحة تحرير الاشتراك. انقر فوق السهم لتحرير سياسة تصفية الاشتراك. 

4c-edit-sub-insurance-quote-request

(انقر للتكبير)

4c-edit-sub-insurance-quote-request

د.  من مربع الحوار المعروض، أدخل كائن JSON التالي:{"insurance_type": ["car", "boat"]}

انقر فوق حفظ التغييرات.

4d-topic-edit-filter-car-boat

(انقر للتكبير)

4d-topic-edit-filter-car-boat

هـ.  يظهر مربع حوار يؤكد أنه قد تم إنشاء سياسة تصفية الاشتراك بنجاح.

 

4e-sub-saved-success

(انقر للتكبير)

4e-sub-saved-success

و.  الآن ستكرر العملية لتضيف سياسة تصفية إلى قائمة الانتظار الثانية. حدد قائمة الانتظار Life-Insurance-Quotes، انقر فوق «تحرير».

انقر فوق السهم لتحرير سياسة تصفية الاشتراك.

من مربع الحوار المعروض، أدخل كائن JSON التالي:{"insurance_type": ["life"]}

انقر فوق حفظ التغييرات.

أنت لست في حاجة إلى تعيين أي سياسة تصفية للاشتراك المرتبط بقائمة الانتظار All-Quotes. هذا النقص في السياسة يجعل قائمة الانتظار هذه تلتقط جميع الأحداث المنشورة في الموضوع.

4f-topic-edit-filter-life

(انقر للتكبير)

4f-topic-edit-filter-life

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

ستقوم بنشر رسائل ذات سمات مختلفة وبالتالي يمكنك عرض آلية تصفية رسائل Amazon SNS وهي قيد العمل.


أ.  من صفحة الموضوعInsurance-Quote-Requests، انقر فوق نشر الرسالة.

5a-topic-detail-with-3subs-2

(انقر للتكبير)

5a-topic-detail-with-3subs-2

ب.  إنشاء الرسالة الأولى عن طريق إدخال القيم التالية في النموذج:

في الموضوع، أدخل: Insurance Quote Request #1

في بنية الرسالة، احتفظ بتحديد صافي الحمولة مطابق لجميع بروتوكولات التسليم

في نص الرسالة المراد إرسالها إلى نقطة النهاية، أدخل النص التالي لتمثيل طلب عروض أسعار تأمين السيارات:
2017 Volvo S60, Montreal

في سمات الرسالة:

  • حددسلسلة في الحقلالنوع
  • أدخل insurance_typeفي الحقلالاسم
  • أدخل car في الحقلالقيمة

انقر فوق نشر رسالة.

5b-publish-message-montreal-address

(انقر للتكبير)

5b-publish-message-montreal-address

ج.  ستعود إلى صفحة الموضوع Insurance-Quote-Requests. انقر فوق نشر رسالةمرةً أخرى، وقم بإنشاء رسالة ثانية باستخدام القيم التالية:

في الموضوع، أدخل: Insurance Quote Request #2

في بنية الرسالة، احتفظ بتحديد صافي الحمولة مطابق لجميع بروتوكولات التسليم

في نص الرسالة المراد إرسالها إلى نقطة النهاية، أدخل النص التالي لتمثيل طلب عروض أسعار تأمين السيارات:
Male, 33 years old, Vancouver

في سمات الرسالة:

  • حدد سلسلة في الحقل النوع
  • أدخل insurance_typeفي الحقلالاسم
  • أدخل life في الحقل القيمة

انقر فوق نشر رسالة.

5c-publish-message-male33

(انقر للتكبير)

5c-publish-message-male33

د.  ستعود إلى صفحة الموضوع Insurance-Quote-Requests. انقر فوق نشر رسالةمرةً أخرى، وقم بإنشاء رسالة ثانية باستخدام القيم التالية:

في الموضوع، أدخل: Insurance Quote Request #3

في بنية الرسالة، احتفظ بتحديد صافي الحمولة مطابق لجميع بروتوكولات التسليم

في نص الرسالة المراد إرسالها إلى نقطة النهاية، أدخل النص التالي لتمثيل طلب عروض أسعار تأمين السيارات:
Townhouse, 1500 sq ft, Toronto

في سمات الرسالة:

  • حددسلسلة في الحقلالنوع
  • أدخل insurance_typeفي الحقلالاسم
  • أدخل home في الحقل القيمة

انقر فوق نشر رسالة.

5d-publish-message-toronto-address

(انقر للتكبير)

5d-publish-message-toronto-address

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

سترى أن قائمة انتظار Amazon SQS المشترِكة لم تكن تحصل على رسالة إلا إذا كان اشتراك SNS المقابل لها متضمنًا سياسة تصفية تطابقت مع سمات هذه الرسالة الواردة.

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


أ.  عُد إلى وحدة تحكم Amazon SQS. حدد قائمة الانتظار Vehicle-Insurance-Quotes وانقر فوق إجراءات قائمة الانتظار.

اختر عرض/حذف الرسائل.  

tmt_filter-messages-sent-to-topics_6a

(انقر للتكبير)

tmt_filter-messages-sent-to-topics_6a

ب.  انقر فوق بدء استقصاء الرسائل.

لاحظ أنه قد تم دفع رسالة واحدة فقط إلى قائمة الانتظار هذه، وهي الرسالة المرتبطة بعرض أسعار تأمين سيارات (Insurance Quote Request #1). أغلق مربع الحوار.

tmt_filter-messages-sent-to-topics_6b

(انقر للتكبير)

tmt_filter-messages-sent-to-topics_6b

ج.  كرر العملية مع قائمة الانتظار الثانية. حدد مربع قائمة الانتظارLife-Insurance-Quotes. من القائمة المنسدلة إجراءات قائمة الانتظار وحدد عرض/حذف الرسائل.

انقر فوق بدء استقصاء الرسائل.

لاحظ أنه قد تم دفع رسالة أخرى إلى قائمة الانتظار هذه، وهي الرسالة المرتبطة بعرض أسعار تأمين الحياة (Insurance Quote Request #2).

انقر إغلاق.

tmt_filter-messages-sent-to-topics_6c

(انقر للتكبير)

tmt_filter-messages-sent-to-topics_6c

د.  وأخيرًا، حدد مربع قائمة الانتظار All-Quotes . انقر فوق إجراءات قائمة الانتظار، وحدد عرض/حذف الرسائل، وانقر فوق بدء استقصاء الرسائل.

لاحظ أن جميع الرسائل الثلاث قد تم دفعها إلى قائمة الانتظار هذه (Insurance Quote Requests #1, #2 and #3).

انقر إغلاق.

tmt_filter-messages-sent-to-topics_6d

(انقر للتكبير)

tmt_filter-messages-sent-to-topics_6d

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


أ.  في وحدة تحكم Amazon SNS، انقر فوق الموضوعات، ثم انقر فوق رابط الموضوع Insurance-Quote-Requests

الخطوة 7أ

(انقر للتكبير)

الخطوة 7أ

ب.  في الصفحة تفاصيل الموضوع Insurance-Quote-Requests ، حدد كل اشتراك من الاشتراكات وانقر فوق حذف.

انقر فوق حذف في مربع الحوار لتأكيد الحذف. 

7b-topic-detail-with-3subs

(انقر للتكبير)

7b-topic-detail-with-3subs

ج.  من صفحة تفاصيل الموضوع Insurance-Quote-Requests، انقر فوق حذف.

قم بتأكيد الحذف عن طريق كتابةاحذفني في مربع الحوار وانقر فوق حذف

 

7c-topic-detail-no-sub

(انقر للتكبير)

7c-topic-detail-no-sub

د.  عُد إلى وحدة تحكم Amazon SQS. حدد جميع قوائم الانتظار المستخدمة في هذا البرنامج التعليمي، وانقر فوقإجراءات قائمة الانتظارثم انقر فوق حذف قوائم الانتظار.

قم بتأكيد الحذف في مربع الحوار.

tmt_filter-messages-sent-to-topics_7d

(انقر للتكبير)

tmt_filter-messages-sent-to-topics_7d

هـ.  يمكنك الآن تسجيل الخروج من وحدة الإدارة في AWS.  

tmt_filter-messages-sent-to-topics_7e

(انقر للتكبير)

tmt_filter-messages-sent-to-topics_7e

يمكنك الآن استخدام تصفية الرسائل على خدمة Amazon Simple Notification Service (SNS) لبناء بنية نشر/بنية اشتراك أكثر بساطة وأكثر سلاسة.

تصفية الرسائل تمكّن المشتركين في موضوعات Amazon SNS من الانتقاء عند استلام مجموعة فرعية من الرسائل ذات الأهمية بالنسبة لهم، بدلاً من استلام جميع الرسائل المنشورة في الموضوع. هذا يُزيل تعقيد التصميم الخاص بتنفيذ منطق تصفية الرسائل في مشتركيك أو منطق توجيه الرسائل في أنظمة الناشرين.


الآن قد تعلمت كيفية تنفيذ تصفية الرسائل باستخدام خدمة Amazon Simple Notification، اختر واحدًا من الخيارات التالية للتعمق أكثر في رسائل السحابة على AWS.

تعرّف على المزيد

احصل على نظرة عامة حول الإمكانات والمكونات وحالات الاستخدام لموضوعات الرسائل على Amazon Web Services (AWS).

تفضل بزيارة صفحة ويب Amazon SNS »

تعمق في الأمر

استكشف دليل المطورين لتعلم كيفية تنفيذ تصفية الرسائل لموضوعات SNS الخاصة بك.

اقرأ الوثائق»

المشاهدة أثناء العمل

استكشف مثالاً يوضح لك كيفية تنفيذ تصفية الرسائل باستخدام AWS SDK for Python.

اقرأ المدونة»

نعم
لا