MessageQueue.Transactional Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient une valeur qui indique si la file d'attente prend en charge les transactions uniquement.
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
Valeur de propriété
true
si la file d'attente accepte uniquement les messages envoyés dans le cadre d'une transaction ; sinon, false
.
- Attributs
Exceptions
Une erreur s'est produite lors de l'accès à une méthode Message Queuing.
Exemples
L’exemple de code suivant affiche la valeur de la propriété d’une file d’attente de Transactional messages.
// Display the value of the queue's Transactional property.
Console.WriteLine("MessageQueue.Transactional: {0}",
queue.Transactional);
Remarques
La messagerie transactionnelle fait référence au couplage de plusieurs messages associés en une seule transaction. L’envoi de messages dans le cadre d’une transaction garantit que les messages sont remis dans l’ordre, remis une seule fois et récupérés avec succès à partir de leur file d’attente de destination.
Si une file d’attente est transactionnelle, elle accepte uniquement les messages envoyés dans le cadre d’une transaction. Toutefois, un message non transactionnel peut être envoyé ou reçu à partir d’une file d’attente de transactions locale sans utiliser explicitement la syntaxe transactionnelle Begin, Commitet Abort . Si un message non transactionnel est envoyé à une file d’attente transactionnelle, ce composant crée une transaction de message unique pour celui-ci, sauf dans le cas de référence d’une file d’attente sur un ordinateur distant à l’aide d’un nom de format direct. Dans ce cas, si vous ne spécifiez pas de contexte de transaction lors de l’envoi d’un message, il n’en est pas créé pour vous et le message sera envoyé à la file d’attente de lettres mortes.
Si vous envoyez un message non transactionnel à une file d’attente transactionnelle, vous ne pourrez pas restaurer le message en cas d’exception.
MessageQueueTransaction est threading apartment aware, donc si votre état d’appartement est STA
, vous ne pouvez pas utiliser la transaction dans plusieurs threads. Visual Basic définit l’état du thread main sur STA
, vous devez donc appliquer le MTAThreadAttribute dans la Main
sous-routine. Sinon, l'envoi d'un message transactionnel qui utilise un autre thread lève une exception MessageQueueException. Vous appliquez le MTAThreadAttribute en utilisant le fragment suivant.
<System.MTAThreadAttribute>
public sub Main()
Le tableau suivant indique si cette propriété est disponible dans différents modes de groupe de travail.
Mode groupe de travail | Disponible |
---|---|
Ordinateur local | Oui |
Ordinateur local et nom de format direct | Oui |
Ordinateur distant | Non |
Ordinateur distant et nom de format direct | Non |