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


キューがトランザクションだけを受け入れるかどうかを示す値を取得します。Gets a value that indicates whether the queue accepts only transactions.

 property bool Transactional { bool get(); };
public bool Transactional { get; }
member this.Transactional : bool
Public ReadOnly Property Transactional As Boolean


キューがトランザクションの一部として送信されるメッセージだけを受け入れる場合は true。それ以外の場合は falsetrue 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}",


トランザクション メッセージングは単一のトランザクションに関連するメッセージがいくつかの結合を表します。Transactional messaging refers to the coupling of several related messages into a single transaction. 順番にメッセージが配信されたことにより、トランザクションの一部としてメッセージを送信する、1 回だけ配信され、送信先のキューから正常に取得します。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. 非トランザクション メッセージを送信または明示的にトランザクションを使用せずにローカル トランザクション キューから受信した、 BeginCommit、および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. このような状況での 1 つは作成されません、メッセージを送信するときに、トランザクション コンテキストを指定しない場合と、メッセージが配信不能キューに送信します。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.

 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