MessageQueue.Transactional Property

Definition

Obtém um valor que indica se a fila aceita apenas as transações.Gets a value that indicates whether the queue accepts only transactions.

public:
 property bool Transactional { bool get(); };
[System.Messaging.MessagingDescription("MQ_Transactional")]
public bool Transactional { get; }
member this.Transactional : bool
Public ReadOnly Property Transactional As Boolean

Property Value

Boolean

true se a fila aceita apenas mensagens enviadas como parte de uma transação; caso contrário, false.true if the queue accepts only messages sent as part of a transaction; otherwise, false.

Attributes

Exceptions

Erro ao acessar um método do serviço de Enfileiramento de Mensagens.An error occurred when accessing a Message Queuing method.

Examples

O exemplo de código a seguir exibe o valor da propriedade Transactional de uma fila de mensagens.The following code example displays the value of a message queue's Transactional property.

// Display the value of the queue's Transactional property.
Console.WriteLine("MessageQueue.Transactional: {0}",
    queue.Transactional);

Remarks

Mensagens transacionais referem-se ao acoplamento de várias mensagens relacionadas em uma única transação.Transactional messaging refers to the coupling of several related messages into a single transaction. O envio de mensagens como parte de uma transação garante que as mensagens sejam entregues em ordem, entregues apenas uma vez e recuperadas com êxito da fila de destino.Sending messages as part of a transaction ensures that the messages are delivered in order, delivered only once, and successfully retrieved from their destination queue.

Se uma fila for transacional, ela aceitará apenas as mensagens que são enviadas como parte de uma transação.If a queue is transactional, it accepts only messages that are sent as part of a transaction. No entanto, uma mensagem não transacional pode ser enviada ou recebida de uma fila de transações local sem usar explicitamente Begintransacionais, Commite sintaxe de Abort.However, a non-transactional message can be sent or received from a local transaction queue without explicitly using transactional Begin, Commit, and Abort syntax. Se uma mensagem não transacional for enviada para uma fila transacional, esse componente criará uma transação de mensagem única para ela, exceto no caso de fazer referência a uma fila em um computador remoto usando um nome de formato direto.If a non-transactional message is sent to a transactional queue, this component creates a single-message transaction for it, except in the case of referencing a queue on a remote computer using a direct format name. Nessa situação, se você não especificar um contexto de transação ao enviar uma mensagem, um não será criado para você e a mensagem será enviada para a fila de mensagens mortas.In this situation, if you do not specify a transaction context when sending a message, one is not created for you and the message will be sent to the dead-letter queue.

Se você enviar uma mensagem não transacional para uma fila transacional, não será possível reverter a mensagem no caso de uma exceção.If you send a non-transactional message to a transactional queue, you will not be able to roll back the message in the event of an exception.

o MessageQueueTransaction está segmentando o Apartment com reconhecimento, portanto, se o estado de seu apartamento for STA, você não poderá usar a transação em vários threads.MessageQueueTransaction is threading apartment aware, so if your apartment state is STA, you cannot use the transaction in multiple threads. Visual Basic define o estado do thread principal como STA, portanto, você deve aplicar o MTAThreadAttribute na sub-rotina Main.Visual Basic sets the state of the main thread to STA, so you must apply the MTAThreadAttribute in the Main subroutine. Caso contrário, o envio de uma mensagem transacional usando outro thread gerará uma exceção MessageQueueException.Otherwise, sending a transactional message using another thread throws a MessageQueueException exception. Você aplica o MTAThreadAttribute usando o fragmento a seguir.You apply the MTAThreadAttribute by using the following fragment.

<System.MTAThreadAttribute>  
 public sub Main()  

A tabela a seguir mostra se essa propriedade está disponível em vários modos de grupo de trabalho.The following table shows whether this property is available in various Workgroup modes.

Modo de grupo de trabalhoWorkgroup mode DisponívelAvailable
Computador localLocal computer SimYes
Computador local e nome de formato diretoLocal computer and direct format name SimYes
Computador remotoRemote computer NãoNo
Computador remoto e nome de formato diretoRemote computer and direct format name NãoNo

Applies to

See also