Mutex über Netzwerk - C#.NET
Habe ich eine message-queue auf einem gemeinsamen system. Dieser Warteschlange erfolgt durch 2 Prozesse, die laufen auf 2 anderen Maschinen. Ich brauche, um den Zugriff auf diese Warteschlange von der 2-Prozesse. Also brauche ich eine "Netzwerk-mutex". Wie kann ich das erreichen?
Ich glaube nicht, dass diese out of the box unterstützt in C#.NET aber wenn ich etwas verpasst haben sehr offensichtlich, weisen mich in die richtige Richtung. Diese Frage wurde vorhin gefragt, aber die Lösungen, die vorgeschlagen beteiligten eine Datenbank. Ich habe eine Datenbank in Frage.
Wie Mutex, die Über ein Netzwerk?
- Versuchen Sie zu vermeiden, zwei Prozesse abarbeiten der Warteschlange und die Verarbeitung der gleichen Nachricht oder etwas anderes?
- Ich weiß nicht, ob MSMQ könnte, Ihre Anforderungen zu erfüllen, aber vielleicht einen Blick Wert.
- Ja! Jede Lösung, die von der Spitze Ihres Geistes? @aaronls: ich bin mit MSMQ ... nicht sicher, ob es bietet einige Bauten in der schließ-Anlage, die ich verwenden kann??
- Ich habe nicht verwendet, MSMQ, aber Sie sollten in der Lage sein, um Sie zu konfigurieren, zu handeln, als das Schloss für Sie, (ich.e, nicht mit einem publisher/subscriber-multicast-Modell) BEARBEITEN - EINE schnelle google scheint nahe zu legen, was Sie wollen, ist das default-Verhalten für MSMQ, haben Sie versucht, die Einstellung und testen Sie es mit zwei Prozessen?
- Ich Suche auf dieser. Was MSMQ unterstützt wird die Atomarität der Nachricht zugestellt oder abgeholt werden. Jedoch, meine Bewerbung liest die Nachricht - die Nachricht verarbeitet und dann löscht ihn aus der Warteschlange. Also das Lesen und löschen sind Sie sicher gehandhabt, die von MSMQ-aber nach dem Lesen und vor dem löschen gibt es nichts, um zu verhindern, dass eine andere Instanz von meinem Programm auf einem anderen Rechner aus immer die gleiche Meldung.
- wie liest du die Nachricht, durch Lesen der Nachricht sollte es entfernen und verhindern, dass andere threads zu sehen, es in einem thread-sichere Weise. Wenn du mit "peek" funktioniert und dann manuell entfernen Sie nach der Verarbeitung dann wird dies zu Problemen führen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie einen Dritten Prozess, der tatsächlich besitzt die Elemente in der Warteschlange. Die beiden Beschäftigten, Fragen, jeder einzelne der Dritte Prozess für den nächsten Artikel, und es ist dieser Dritte Prozess, der Politik den Zugriff und wirkt als Sperre.
Verwenden MSMQ oder andere queuing-system-design für die Nutzung über ein Netzwerk.
Win32 hat keine cross Maschine Synchronisations-primitive, wie ein muxtex, Sie könnten in der Lage sein, etwas zu bauen, aus der Datei zu sperren, aber Sie würden einfach nur wieder neu zu erfinden, MSMQ.
system.messaging
namespace).Ich denke ich habe gefunden was ich suchte ... und es stellt sich heraus, dass eine einfache Eigenschaft Einstellung!
http://msdn.microsoft.com/en-us/library/system.messaging.messagequeue.denysharedreceive%28VS.80%29.aspx
Sollte untersucht haben, diese erste!!!!
Jeff Schlüssel berichtet hat ein Problem mit diesem und seinen Erfahrungen:
http://weblogs.asp.net/jkey/archive/2004/05/12/130922.aspx
Danke Euch allen für die Hilfe.