العديد من المستهلكين لقائمة انتظار واحدة في MassTransit

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

  •  21-09-2019
  •  | 
  •  

سؤال

هل من الممكن أن يستمع العديد من المستهلكين على مثيل واحد من MSMQ واستخدام واجهة المستهلك الانتقائية لوجود كل واحد يتعامل مع مجموعة فرعية مميزة من الرسائل؟ لا يمكنني الحصول على هذا السيناريو للعمل بشكل صحيح باستخدام Pub/Sub - مستهلك واحد في قائمة الانتظار يعمل بشكل جيد ، ولكن عند استخدام> 1 مستهلكين (عدة مثيلات من نفس التنفيذ) لا تظهر أي رسائل في أي مكان. كما أفهمها ، ليس هذا هو الحال في "المستهلكين المتنافسين" ، لأن مستهلك واحد فقط سيقوم بمعالجة رسالة واحدة.

أي مساعدة أو مؤشرات موضع تقدير.

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

المحلول

إذا كنت تستخدم MassTransit لإرسال الرسائل من قائمة انتظار MSMQ ، فمن المستحسن أن تكون قائمة الانتظار محلية في المربع.

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

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

بسبب هذا النمط ، يوصى بشدة بتعيين انتهاء على الرسالة حتى لا تسد الاستجابات التي تم تجاهلها قائمة الانتظار بمرور الوقت.

هذا السيناريو شائع جدًا عند تكرار نمط الطلب/الاستجابة عبر المراسلة.

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