MessageQueue.Transactional Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 |