Transaktions vs. nicht transaktions msmq
-
05-07-2019 - |
Frage
Ich sehe ständig Dokumentation sagen, dass es ist nicht möglich, zu einer entfernten Transaktionswarteschlange MSMQ, außerhalb des Bereichs einer Transaktion zu senden. Ich finde, diese schwer zu glauben, weil ich denken Ich habe jetzt genau das seit Wochen zu tun. Ich habe eine kleine app, dass Beiträge Nachrichten an eine Remote-Warteschlange, die transaktions ist. Nur mit Leistung zu experimentieren, sind verschiedene Versionen des Clients entweder eine Transaction wickeln Sie den Sendevorgang oder nicht. Letztlich schien, viel intelligenter und schneller eine Kompensationstransaktionslogik mit so fiel Verwendung von Transaction sowohl auf Client und Server wurden. Die Sache ist, Nachrichten immer noch in der Warteschlange zu zeigen scheinen, und durch den Dienst ohne Probleme verarbeitet bekommen.
Kann jemand mir erklären, was es ist, dass ich hier fehlt? Bin ich gerade dick? Fühlen Sie sich frei zu sagen, so (es wird sicherlich nicht das erste Mal sein).
Lösung
Die Transaktion, die Sie mit der Transaction beziehen sich auf der dtc (Distributed Transaction Coordinator) umgesetzt werden. msmq (wie SQL) haben ihre interne Transaktion Motor. Es ist eine Eigenschaft in der Nachricht, die, dass seine eine Transaktionsmeldung besagt. Und Sie es wahrscheinlich irgendwo in Sie Code festgelegt.
Andere Tipps
Es hängt davon ab, welche Version von MSMQ Sie verwenden. Nur MSMQ 4.0 und höher (Vista, 7, Server 2008) können Remote-Transaktions tun liest. Und Sie sind mit der Transaction richtig, als DTC verwendet werden muss.