MessageQueue.Transactional Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает значение, указывающее, принимает ли очередь только транзакции.
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
Значение свойства
Значение true
, если очередь принимает только сообщения, отправляемые как часть транзакции; в противном случае — значение false
.
- Атрибуты
Исключения
При обращении к методу службы очереди сообщений возникла ошибка.
Примеры
В следующем примере кода отображается значение свойства очереди Transactional сообщений.
// Display the value of the queue's Transactional property.
Console.WriteLine("MessageQueue.Transactional: {0}",
queue.Transactional);
Комментарии
Обмен сообщениями транзакций означает связь нескольких связанных сообщений с одной транзакцией. Отправка сообщений в рамках транзакции гарантирует, что сообщения будут доставлены по порядку, доставлены только один раз и успешно извлечены из целевой очереди.
Если очередь является транзакционной, она принимает только сообщения, отправляемые в рамках транзакции. Однако сообщение, не относящийся к транзакциям, может быть отправлено или получено из локальной очереди транзакций без явного использования синтаксиса транзакций Begin, Commitи Abort . Если в очередь транзакций отправляется сообщение, не относящийся к транзакциям, этот компонент создает для него транзакцию с одним сообщением, за исключением случаев ссылки на очередь на удаленном компьютере с использованием имени прямого формата. В этом случае, если не указать контекст транзакции при отправке сообщения, он не будет создан для вас и сообщение будет отправлено в очередь недоставленных сообщений.
Если вы отправляете в очередь транзакций не транзакционные сообщения, вы не сможете выполнить откат сообщения в случае исключения.
MessageQueueTransaction учитывает потоки, поэтому, если состояние квартиры — STA
, транзакцию нельзя использовать в нескольких потоках. Visual Basic задает для потока STA
main состояние , поэтому необходимо применить MTAThreadAttribute в подпрограмме Main
. В противном случае при отправке транзакционного сообщения с помощью другого потока создастся исключение MessageQueueException. Примените с MTAThreadAttribute помощью следующего фрагмента.
<System.MTAThreadAttribute>
public sub Main()
В следующей таблице показано, доступно ли это свойство в различных режимах рабочей группы.
Режим рабочей группы | Доступно |
---|---|
Локальный компьютер | Да |
Имя локального компьютера и прямого формата | Да |
Удаленный компьютер | Нет |
Имя удаленного компьютера и прямого формата | Нет |