MessageQueue.Transactional Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft einen Wert ab, der angibt, ob die Warteschlange nur Transaktionen akzeptiert.
public:
property bool Transactional { bool get(); };
[System.Messaging.MessagingDescription("MQ_Transactional")]
public bool Transactional { get; }
[<System.Messaging.MessagingDescription("MQ_Transactional")>]
member this.Transactional : bool
Public ReadOnly Property Transactional As Boolean
Eigenschaftswert
true
, wenn die Warteschlange nur Meldungen akzeptiert, die als Teil einer Transaktion gesendet wurden, andernfalls false
.
- Attribute
Ausnahmen
Fehler beim Zugriff auf eine Message Queuing-Methode.
Beispiele
Im folgenden Codebeispiel wird der Wert der Eigenschaft einer Nachrichtenwarteschlange Transactional angezeigt.
// Display the value of the queue's Transactional property.
Console.WriteLine("MessageQueue.Transactional: {0}",
queue.Transactional);
Hinweise
Transaktionsmessaging bezieht sich auf die Kopplung mehrerer verwandter Nachrichten in eine einzelne Transaktion. Durch das Senden von Nachrichten im Rahmen einer Transaktion wird sichergestellt, dass die Nachrichten in der richtigen Reihenfolge zugestellt, nur einmal zugestellt und erfolgreich aus der Zielwarteschlange abgerufen werden.
Wenn eine Warteschlange transaktional ist, akzeptiert sie nur Nachrichten, die als Teil einer Transaktion gesendet werden. Eine nicht transaktionale Nachricht kann jedoch von einer lokalen Transaktionswarteschlange gesendet oder empfangen werden, ohne explizit Transaktions Begin-, Commit- und Abort -Syntax zu verwenden. Wenn eine nicht transaktionale Nachricht an eine Transaktionswarteschlange gesendet wird, erstellt diese Komponente eine Einzelnachrichtentransaktion für sie, außer im Fall, dass auf eine Warteschlange auf einem Remotecomputer mit einem direkten Formatnamen verwiesen wird. Wenn Sie in dieser Situation beim Senden einer Nachricht keinen Transaktionskontext angeben, wird kein Transaktionskontext für Sie erstellt, und die Nachricht wird an die Warteschlange für unzustellbare Nachrichten gesendet.
Wenn Sie eine nicht transaktionale Nachricht an eine Transaktionswarteschlange senden, können Sie im Falle einer Ausnahme kein Rollback für die Nachricht ausführen.
MessageQueueTransaction ist threading apartment-fähig. Wenn Ihr Apartmentstatus also lautet STA
, können Sie die Transaktion nicht in mehreren Threads verwenden. Visual Basic legt den Zustand des Standard Threads auf festSTA
, sodass Sie den MTAThreadAttribute in der Main
Unterroutine anwenden müssen. Andernfalls wird durch das Senden einer Transaktionsmeldung mithilfe eines anderen Threads eine MessageQueueException-Ausnahme ausgelöst. Verwenden Sie das MTAThreadAttribute folgende Fragment.
<System.MTAThreadAttribute>
public sub Main()
Die folgende Tabelle zeigt, ob diese Eigenschaft in verschiedenen Arbeitsgruppenmodi verfügbar ist.
Arbeitsgruppenmodus | Verfügbar |
---|---|
Lokalem Computer | Ja |
Name des lokalen Computers und des direkten Formats | Ja |
Remotecomputer | Nein |
Name des Remotecomputers und des direkten Formats | Nein |