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式、 CommitAbort 語法。 如果非交易式訊息傳送至交易式佇列,則此元件會為其建立單一訊息交易,但使用直接格式名稱參考遠端電腦上的佇列的情況除外。 在此情況下,如果您未在傳送訊息時指定交易內容,則不會為您建立一個,而且訊息會傳送至寄不出的信件佇列。

如果您將非交易式訊息傳送至交易式佇列,您將無法在發生例外狀況時回復訊息。

MessageQueueTransaction 是線程 Apartment 感知,因此如果您的 Apartment 狀態為 STA,則您無法在多個線程中使用交易。 Visual Basic 會將主線程的狀態設定為 STA,因此您必須在Main子程式中套用 MTAThreadAttribute 。 否則,使用其他執行緒傳送交易式訊息時,會擲回 MessageQueueException 例外狀況。 您可以使用下列片段來套用 MTAThreadAttribute

<System.MTAThreadAttribute>
 public sub Main()

下表顯示此屬性是否可在各種工作組模式中使用。

工作組模式 可用
本機電腦
本機計算機和直接格式名稱
遠端電腦
遠端電腦和直接格式名稱

適用於

另請參閱