سؤال

أقوم بدمج سياقات محددة مختلفة مع Windows Service Bus ولدي بعض الأسئلة:

1) كيفية اكتشاف التكرارات في السياقات الأخرى المحددة؟هل تريد تخزين آخر تسلسل للرسائل التي تمت معالجتها؟أريد القدرة على إعادة إطلاق الأحداث للسماح بإعادة مزامنة السياقات المحدودة الجديدة HandleEvent(OrderPlaced orderPlaced, bool isReplay) التي يتم شراؤها للإنتاج في المستقبل لإجراء مزامنة أولية.

2) بالنسبة لحافلة الرسائل بين السياقات، هل سنستخدم موضوعًا لكل سياق محدد (ولدينا مساحة الاسم لتجميع السياقات المحدودة)؟أو سياق واحد محدد لكل مساحة الاسم؟

3) تشير وثائق ناقل الرسائل إلى إمكانية وصول الرسائل خارج الترتيب، ما هي الخوارزمية التي يجب استخدامها لإعادة التجميع بالترتيب؟ماذا سيحدث إذا تم استلام الرسالتين 6 و 8، ولكن لم تصل الرسالة 7 مطلقًا؟هل ننتظر وقتا محددا ثم نكمل؟كيفية السماح بالإصلاح الذاتي؟

4) أتصور أن ما ورد أعلاه شائع جدًا في جميع مشاريع DDD تقريبًا، هل هناك أي مكتبات تتعامل مع الرسائل بما في ذلك بروتوكول الأوامر/الاستجابة لطلب مزامنة الأحداث السابقة من سياق خارجي محدد؟

هل كانت مفيدة؟

المحلول

هذا لا يجيب على معظم أسئلتك، لكنه يوفر لك بديلا.

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

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

يعتمد ما إذا كان هذا منطقيًا بالنسبة لك، على مدى السرعة التي تحتاجها للرد على الأشياء، ومدى حداثة بياناتك (ثانية واحدة مقابل 30 ثانية وما إلى ذلك).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top