سؤال

أنا حاليا بناء اثنين من خدمات windows:

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

  • الثاني ينفذ عملية دفعة جديد من الرسائل التي وصلت منذ آخر مرة ركض.

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

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

أفترض هناك طريقة أفضل للقيام بذلك أنه لم أصادف شخص يمكن أن يرجى لي نقطة في الاتجاه الصحيح ؟

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

المحلول

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

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

نصائح أخرى

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

MSMQ قليلا من الوزن الثقيل عن شيء هذا بسيط.ثم مرة أخرى هل يمكن أن مجرد استخدام MSMQ و التخلص من DB تماما أيضا. أن من شأنه أن يكون وسيلة للقيام بذلك.

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