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


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);

Комментарии

Обмен сообщениями транзакций относится к связыванию нескольких связанных сообщений в одну транзакцию. Отправка сообщений в рамках транзакции гарантирует, что сообщения доставляются по порядку, доставляются только один раз и успешно извлекаются из конечной очереди.

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

Если вы отправляете сообщение, отличное от транзакций, в очередь транзакций, вы не сможете откатить сообщение в случае исключения.

MessageQueueTransaction учитывает потоки квартиры, поэтому если ваше состояние STAквартиры имеет значение, вы не можете использовать транзакцию в нескольких потоках. Visual Basic задает состояние основного потока STA, поэтому необходимо применить MTAThreadAttribute в подпрограмме Main . В противном случае отправка транзакционного сообщения с помощью другого потока вызывает MessageQueueException исключение. Применяется MTAThreadAttribute с помощью следующего фрагмента.

<System.MTAThreadAttribute>
 public sub Main()

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

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

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

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