MessageQueue.Transactional MessageQueue.Transactional MessageQueue.Transactional MessageQueue.Transactional Property

Определение

Получает значение, указывающее, принимает ли очередь только транзакции.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

Значение свойства

Значение true, если очередь принимает только сообщения, отправляемые как часть транзакции; в противном случае — значение false.true if the queue accepts only messages sent as part of a transaction; otherwise, false.

Исключения

При обращении к методу службы очереди сообщений возникла ошибка.An error occurred when accessing a Message Queuing method.

Примеры

В следующем примере кода выводится значение Transactional свойства очереди сообщений.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);

Комментарии

Транзакционная система обмена сообщениями относится к взаимосвязанию нескольких связанных сообщений с одной транзакцией.Transactional messaging refers to the coupling of several related messages into a single transaction. Отправка сообщений в рамках транзакции гарантирует, что сообщения доставляются по порядку, доставляются только один раз и успешно извлекаются из очереди назначения.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.

Если очередь является транзакционной, она принимает только сообщения, которые отправляются как часть транзакции.If a queue is transactional, it accepts only messages that are sent as part of a transaction. Тем не менее, нетранзакционное сообщение может быть отправлено или получено из локальной очереди транзакций без явного использования транзакционного Begin, Commitи 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. Если нетранзакционное сообщение отправляется в транзакционную очередь, этот компонент создает для него транзакцию с одним сообщением, за исключением случая, когда в случае ссылки на очередь на удаленном компьютере используется прямое имя формата.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. В этом случае, если не указать контекст транзакции при отправке сообщения, одно из них не создается и сообщение будет отправлено в очередь недоставленных сообщений.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.

При отправке нетранзакционного сообщения в транзакционную очередь вы не сможете выполнить откат сообщения в случае возникновения исключения.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.

MessageQueueTransactionучитывает потоковое подразделение, поэтому, если состояние апартамента STA—, нельзя использовать транзакцию в нескольких потоках.MessageQueueTransaction is threading apartment aware, so if your apartment state is STA, you cannot use the transaction in multiple threads. Visual Basic устанавливает состояние основного потока в STA, поэтому необходимо MTAThreadAttribute применить в Main подподпрограмме.Visual Basic sets the state of the main thread to STA, so you must apply the MTAThreadAttribute in the Main subroutine. В противном случае при отправке транзакционного сообщения с помощью другого потока создастся исключение MessageQueueException.Otherwise, sending a transactional message using another thread throws a MessageQueueException exception. Для MTAThreadAttribute применения используется следующий фрагмент.You apply the MTAThreadAttribute by using the following fragment.

<System.MTAThreadAttribute>  
 public sub Main()  

В следующей таблице показано, доступно ли это свойство в различных режимах рабочей группы.The following table shows whether this property is available in various Workgroup modes.

Режим рабочей группыWorkgroup mode ДоступноAvailable
Локальный компьютерLocal computer ДаYes
Локальный компьютер и прямое имя форматаLocal computer and direct format name ДаYes
Удаленный компьютерRemote computer НетNo
Удаленный компьютер и прямое имя форматаRemote computer and direct format name НетNo

Применяется к

Дополнительно