Ist es möglich, SQL-Befehle auszuführen und MSMQ-Nachrichten in einer Transaction schicken?

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

  •  05-07-2019
  •  | 
  •  

Frage

Ich unter mein Team das neue Projekt mit MSMQ für, aber ich muss wissen, ob ich MSMQ-Nachrichten senden kann und SQL-Befehle innerhalb eines System.Transactions.TransactionScope ausführen und haben sie zusammen oder zurückzusetzen. Ich kann nicht eine zuverlässige Quelle online finden, die mit „Ja“ mit Codebeispielen sagen.

Ich brauche ein paar Nachrichten an eine einzelne Warteschlange zu senden und einige Datensätze in einer einzigen Datenbank einfügen, aber ich brauche, um zu gemeinsam Erfolg haben oder scheitern.

EDIT:. Ich war nicht in der Lage, tatsächlich zu prüfen, ob das funktioniert oder nicht in meinen Tests (ich war diese Aufgabe schnell abziehbar), aber alle die Dokumentation besagt, dass Transaction MSMQ nicht erfassen Nachrichten und SQL-Befehle in der gleichen Instanz

War es hilfreich?

Lösung

Aus eigener Erfahrung weiß ich, die Transaction mit SQL funktioniert gut. Ich bin nicht allzu vertraut mit MSMQ aber schnell Google-Suche zeigt einige Beispiele (normalerweise Forumsdiskussionen), wo es aussieht wie es erfolgreich funktioniert hat. Das System.Messaging.MessageQueue Objekt hat auch eine .Transactional Eigenschaft und die .Send () -Methode hat einen Message Parameter so würde ich sagen, es sollte alle zusammen arbeiten.

Hier ist der Code Beispiel aus einer der Foren in der Suche ein (nicht mein Code):

using (TransactionScope scope = new TransactionScope())  
{  
    using (MessageQueue myQueue = new MessageQueue(QUEUE_NAME))  
    {  
    if (myQueue.Transactional)  
        {  
        myQueue.Send(TicketTextBox.Text, "Message", MessageQueueTransactionType.Automatic);  
        }  
    }  
scope.Complete();  
}

Just werfen Sie Ihren SQL-Code in der Verwendung von () Block für die Transaction (vor dem Dem Gesamt ()) und Sie sollten gut gehen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top