次の方法で共有


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

注釈

トランザクション メッセージングとは、複数の関連メッセージを 1 つのトランザクションに結合することを指します。 トランザクションの一部としてメッセージを送信すると、メッセージが順番に配信され、1 回だけ配信され、宛先キューから正常に取得されます。

キューがトランザクションの場合、トランザクションの一部として送信されるメッセージのみを受け入れます。 ただし、トランザクション、、および Abort 構文を明示的に使用せずに、ローカル トランザクション キューから非トランザクション BeginCommitメッセージを送受信できます。 非トランザクション メッセージがトランザクション キューに送信される場合、このコンポーネントは、直接形式名を使用してリモート コンピューター上のキューを参照する場合を除き、そのメッセージに対して単一メッセージ トランザクションを作成します。 この状況では、メッセージの送信時にトランザクション コンテキストを指定しないと、メッセージは自動的に作成されず、メッセージは配信不能キューに送信されます。

非トランザクション メッセージをトランザクション キューに送信した場合、例外が発生した場合にメッセージをロールバックすることはできません。

MessageQueueTransaction はスレッドアパートメント対応であるため、アパートメントの状態が の場合、 STAトランザクションを複数のスレッドで使用することはできません。 Visual Basic では、メイン スレッドの状態が にSTA設定されるため、サブルーチンで をMTAThreadAttribute適用するMain必要があります。 適用しない場合、別のスレッドを使用してトランザクション メッセージを送信すると、MessageQueueException 例外がスローされます。 を適用する場合は MTAThreadAttribute 、次のフラグメントを使用します。

<System.MTAThreadAttribute>
 public sub Main()

次の表は、このプロパティがさまざまなワークグループ モードで使用できるかどうかを示しています。

ワークグループ モード 利用可能
ローカル コンピューター はい
ローカル コンピューターと直接の形式名 はい
リモート コンピューター いいえ
リモート コンピューターと直接形式の名前 いいえ

適用対象

こちらもご覧ください