Поделиться через


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 задает для потока STAmain состояние , поэтому необходимо применить MTAThreadAttribute в подпрограмме Main . В противном случае при отправке транзакционного сообщения с помощью другого потока создастся исключение MessageQueueException. Примените с MTAThreadAttribute помощью следующего фрагмента.

<System.MTAThreadAttribute>
 public sub Main()

В следующей таблице показано, доступно ли это свойство в различных режимах рабочей группы.

Режим рабочей группы Доступно
Локальный компьютер Да
Имя локального компьютера и прямого формата Да
Удаленный компьютер Нет
Имя удаленного компьютера и прямого формата Нет

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

См. также раздел