Ich habe mehrere Prozesse, die eine MSMQ-Warteschlange überwachen. Ich möchte mehrstufige Operationen machen, wie zum Beispiel die Nachricht zuerst sehen und dann basierend auf einigen Kriterien die Nachricht erhalten. Eine einzelne Nachricht kann die Empfangskriterien mehrerer Prozesse bestehen, so dass mehr als ein Prozess versucht, dieselbe Nachricht zu empfangen. Werden diese Operationen threadsicher sein? Wenn nicht, was sollte ich tun, um zu verhindern, dass ein Prozess die Nachricht erhält, die ein anderer Prozess bereits erhalten hat?
Die Operationen selbst sind Thread-sicher. Wenn Sie jedoch eine mehrstufige Operation ausführen, stellen Sie möglicherweise fest, dass die Ergebnisse nicht konsistent sind (z. B. um zu sehen, ob Daten in der Warteschlange sind, dann um die Daten zu empfangen, nur um festzustellen, dass sie nicht mehr vorhanden sind).
Sie könnten an einem Blogeintrag interessiert sein, den ich zu diesem Thema geschrieben habe.
Kurz gesagt, die MSMQ C ++ - API ist Thread-sicher, aber nicht alle System.Messaging-Methoden sind Thread-sicher. Im Blog-Beitrag erörtern wir, wie man MessageQueue.Send threadsicher aufruft.
Tags und Links multithreading msmq