سؤال

كنا نبحث في MSMQ لخادم "الدفع" المستمر لاتصال العميل. يمكن أن يكون هناك ما يصل إلى 1000 عميل لكل خادم.

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

هل هناك أي طريقة لجعل MSMQ يلائم هذا النمط من الاستخدام عن طريق تقليل مقدار الوقت الذي يحاول الاتصال بمضيف غير متصل؟ إذا لم يكن الأمر كذلك ، فهل هناك أي منتج آخر في طابور سيكون مناسبًا بشكل أفضل ، أم أنه يلف وقتك؟ الإنتاجية الخام ليست أولوية ، ولكن عدد قوائم الانتظار الصادرة وقابلية التنبؤ/أقصى زمن انتقال ، وكذلك بصمة الذاكرة على العملاء (والتي يمكن أن تكون آلات قديمة إلى حد ما).

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

المحلول 2

كان حلنا هو إيقاف قوائم قوائم الانتظار برمجيًا للآلات التي كانت غير متصلة بالإنترنت (كان لدينا بالفعل رسالة UDP لمعرفة ما إذا كان العملاء قد انتهوا) عبر أحد واجهات إدارة MSMQ.

مع توقف قوائم الانتظار إلى المضيفين المعروفين مؤقتًا ، قضت MSMQ وقتًا أقل بكثير في العمل من خلال رسائل غير قابلة للتسليم.

لقد كان أيضًا درسًا لطيفًا لتطبيق القليل من التفكير الجانبي عند التفكير في اختبارات لتقييم التقنيات! بشكل عام ، لن أوصي MSMQ بالخادم إلى Command Command بسبب هذه المشكلة - أود أن أقول أن الاقتراع من قبل العملاء سيكون من الأفضل.

نصائح أخرى

يمكنك زيادة الأداء عن طريق تعطيل اليومية وجعل الرسائل غير قابلة للاسترداد ... إذا كنت لا تهتم بالرسائل التي تضيع.

قد يكون الإصلاح السريع مع سيناريو الخاص بك في وضع عدم الاتصال هو زيادة عدد المواضيع المتاحة لـ MSMQ الذي يستخدم مؤشر ترابط لكل قائمة انتظار صادرة. تستغرق كل محاولة اتصال متصل بعض الوقت ، وحظر موضوع. http://technet.microsoft.com/en-us/library/cc957498.aspx حاول رمي أكبر عدد ممكن من المواضيع في ذلك.

لقد عمل زملائي مع ActiveMQ وقالوا إنه أكثر مرونة أثناء الأداء الأفضل. لم أعمل معها شخصيًا ولكني كنت أنظر إليها إذا لم تكن مرتبطًا بـ .NET.

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