Ist MSMQ threadsicher?

7

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?

    
Raminder 22.10.2008, 06:05
quelle

3 Antworten

5

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).

    
Brad Wilson 22.10.2008, 06:20
quelle
14

Laut MSDN :

  

Nur die folgenden Methoden sind threadsicher: BeginPeek, BeginReceive, EndPeek (IAsyncResult), EndReceive (IAsyncResult), GetAllMessages, Peek und Receive.

    
Darksider 22.10.2008 06:22
quelle
6

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.

    
Yoel Arnon 27.10.2008 13:16
quelle

Tags und Links