MSMQ: الرسائل في بعض الأحيان لا يتم إرسالها أو استلامها دون خطأ

StackOverflow https://stackoverflow.com//questions/25012144

  •  20-12-2019
  •  | 
  •  

سؤال

لدي الإعداد التالي والمشكلة مع MSMQ. بناء على التجربة السابقة مع MSMQ، أراهن أنه شيء بسيط في مفقود لكنني لا أعرف ما هو عليه.

الإعداد

لدي 3 خوادم ويب متوازنة لتحميل (يتيح الاتصال بهم للخوادم w1 ، w2 و w3 ) وخادم واحد الذي يعالج أحداث معينة / البيانات بعيدا عن طلبات الويب (التي سأتصل p ). كل 3 من خوادم الويب، بمجرد حدوث حدث معين ضمن تطبيق الويب، سيرسل رسالة إلى قائمة انتظار خاصة عن بعد على الخادم p ، والتي ستعالج كل رسالة من قائمة الانتظار وتنفيذ بعض المهمة.

المشكلة

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

التفاصيل

هنا كل التفاصيل التي يمكنني التفكير فيها والتي قد تساعد في شرح الإعداد الخاص بي وماذا أحسب حتى الآن:

  • قائمة انتظار خاصة على الخادم p غير معاملات.
  • قائمة الانتظار الخاصة لديها إعداد أذونات الجميع إلى كل من إرسال الرسائل واستقبالها.
  • هذا هو الرمز الذي أستخدمه (C #) لإرسال الرسالة إلى قائمة انتظار عن بعد:

    giveacodicetagpre
  • أرسل الرسالة باستخدام الرمز أعلاه لا يبدو أن رمي استثناء - إذا كان قد فعلت معالج الأخطاء في تطبيق الويب قد تم القبض عليه وقم بتسجيله، لذلك افترض أنه يتم إرساله.

  • هناك قوائم انتظار صادرة على w1 ، w2 و w3 مشيرا إلى قائمة الانتظار الخاصة على p - كل هذه فارغة.
  • على w1 ، w2 و w3 لا أستطيع رؤية أي رسائل "ميتة ميتة".
  • على p قائمة انتظار خاصة فارغة حتى تتم معالجة الرسائل (التي يمكنني التحقق منها من قاعدة البيانات الخاصة بي).
  • على p لا توجد رسائل "ميتة ميتة". هناك رسائل دفتر اليومية لكنها لا يبدو أنها تتوافق مع أي تاريخ / أوقات / أوقات حديثة.
  • جميع الخوادم تقوم بتشغيل Windows Server 2012.

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

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

المحلول

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

على أي حال، هناك العديد من الأسباب المحتملة لماذا قد يفشل ذلك. ما نوع التسجيل الذي لديك (مستويات تصحيح / معلومات)؟

أعتقد أن ما يلي سيساعد في تتبع المشكلة:

  1. عندما يتم إنشاء حدث في تطبيق الويب.
  2. مباشرة قبل إرسال حدث من تطبيق الويب، عبر MSMQ.
  3. في جهاز الاستقبال عند الحصول على رسالة من قائمة الانتظار.
  4. بهذه الطريقة يمكنك أن تتمكن من مطابقة الرسائل المرسلة على الأقل إلى الرسائل المستلمة والرسائل المعالجة.

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

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