خدمة WCF في قائمة الانتظار التي تعالج كل X Seconds

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

  •  25-09-2019
  •  | 
  •  

سؤال

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

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

المحلول

لا يوجد شيء مدمج في WCF يسمح لك بالتعامل مع هذا بشكل صريح ، لذلك لا تزال بحاجة إلى القيام بكل العمل بنفسك.

على الرغم من أن خدمتك يمكن أن تقوم بالتأكيد بمعالجة الطلبات من MSMQ ، فإن مستمعي MSMQ في WCF سيقومون باختيار الرسائل ومعالجتها في أقرب وقت ممكن ؛ لا يمكنك تكوينها لمعالجة الرسائل في كل ثوانٍ فقط فقط (يمكنك مزيفة مع الأدوات المناسبة ، ولكن يبدو لي أنها لن تكون رائعة).

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

نصائح أخرى

WCF و MSMQ فريق رائع! بالتأكيد تستحق التحقق.

الجزء الذي لا يوفره WCF خارج الصندوق هو "التحقق من كل ثوانٍ X". أفضل نهج هنا هو استضافة خدمة WCF الخاصة بك داخل خدمة Windows NT ، والحصول على مؤقت داخل خدمة NT التي تذهب للتحقق من قائمة انتظار MSMQ فقط مرة واحدة في كل ثانية. لا ينبغي أن يكون من الصعب تنفيذها ، حقا. الجمال هو: يمكنك بسهولة استضافة خدمة WCF داخل خدمة NT - فقط بضعة أسطر من التعليمات البرمجية ، وتحكم في ما يحدث ومتى. انظر مستندات MSDN على كيفية استضافة خدمة WCF في تطبيق مُدار للتفاصيل.

موارد:

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

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