Compartilhar via


MessageQueue.Transactional Propriedade

Definição

Obtém um valor que indica se a fila aceita apenas as transações.

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

Valor da propriedade

true se a fila aceita apenas mensagens enviadas como parte de uma transação; caso contrário, false.

Atributos

Exceções

Erro ao acessar um método do serviço de Enfileiramento de Mensagens.

Exemplos

O exemplo de código a seguir exibe o valor da propriedade de uma fila de Transactional mensagens.

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

Comentários

Mensagens transacionais referem-se ao acoplamento de várias mensagens relacionadas em uma única transação. 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.

Se uma fila for transacional, ela aceitará apenas mensagens enviadas como parte de uma transação. No entanto, uma mensagem não transacional pode ser enviada ou recebida de uma fila de transações local sem usar explicitamente a sintaxe transacional Begin, Commite Abort . 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 referenciar uma fila em um computador remoto usando um nome de formato direto. 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.

Se você enviar uma mensagem não transacional para uma fila transacional, não poderá reverter a mensagem no caso de uma exceção.

MessageQueueTransaction é threading apartment aware, portanto, se o seu estado de apartment for STA, você não poderá usar a transação em vários threads. O Visual Basic define o estado do thread main como STA, portanto, você deve aplicar o MTAThreadAttribute na Main sub-rotina. Caso contrário, o envio de uma mensagem transacional usando outro thread gerará uma exceção MessageQueueException. Você aplica o MTAThreadAttribute usando o fragmento a seguir.

<System.MTAThreadAttribute>
 public sub Main()

A tabela a seguir mostra se essa propriedade está disponível em vários modos de Grupo de Trabalho.

Modo de grupo de trabalho Disponível
Computador local Yes
Nome do computador local e do formato direto Yes
Computador remoto Não
Computador remoto e nome de formato direto Não

Aplica-se a

Confira também