Partager via


MessageQueue.Transactional Propriété

Définition

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

S’applique à

Voir aussi