هل يمكنني تصفية الرسائل التي أتلقاها من قائمة انتظار الرسائل (MSMQ) حسب بعض الخصائص؟(الملقب ب.عنوان)

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

  •  09-06-2019
  •  | 
  •  

سؤال

أقوم بإنشاء خدمة Windows في C# تعالج الرسائل من قائمة الانتظار.أريد أن أمنح العمليات مرونة تقسيم الخدمة في الإنتاج وفقًا لخصائص الرسالة.على سبيل المثال، يجب أن يكونوا قادرين على القول بأن أحد المثيلات يقوم بمعالجة أوامر الويب من العميل "أ"، وأوامر مجمعة أخرى من العميل "أ"، وموقع ويب ثالث أو أوامر مجمعة من العميل "ب"، وما إلى ذلك.

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

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

المحلول

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

نصائح أخرى

يستخدم GetMessageEnumerator2() مثله:

MessageEnumerator en = q.GetMessageEnumerator2();

while (en.MoveNext())
{
    if (en.Current.Label == label)
    {
        string body = ((XmlDocument)en.Current.Body).OuterXml;
        en.RemoveCurrent();
        return body;
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top