語言

MessageQueue.PeekById 方法

定義

回傳一份包含指定訊息識別碼的訊息副本,且不會將訊息從佇列中移除。

多載

名稱 Description
PeekById(String)

窺視訊息識別碼與參數相符 id 的訊息。

PeekById(String, TimeSpan)

窺視訊息識別碼與參數相符 id 的訊息。 等待訊息出現在佇列中或發生逾時。

PeekById(String)

窺視訊息識別碼與參數相符 id 的訊息。

public:
 System::Messaging::Message ^ PeekById(System::String ^ id);
public System.Messaging.Message PeekById(string id);
member this.PeekById : string -> System.Messaging.Message
Public Function PeekById (id As String) As Message

參數

id
String

訊息的一 Id 瞥。

傳回

Message其Id性質與參數相符id。

例外狀況

參數 id 為 null。

沒有符合指定 id 訊息的訊息存在。

存取訊息佇列方法時發生錯誤。

範例

下列程式代碼範例示範 如何使用 PeekById(String)。


// Connect to a queue on the local computer.
MessageQueue^ queue = gcnew MessageQueue(".\\exampleQueue");

// Create a new message.
Message^ msg = gcnew Message("Example Message Body");

// Send the message.
queue->Send(msg, "Example Message Label");

// Get the message's Id property value.
String^ id = msg->Id;

// Simulate doing other work so the message has time to arrive.
System::Threading::Thread::Sleep(TimeSpan::FromSeconds(10.0));

// Peek at the message.
msg = queue->PeekById(id);

queue->Close();

// Connect to a queue on the local computer.
MessageQueue queue = new MessageQueue(".\\exampleQueue");

// Create a new message.
Message msg = new Message("Example Message Body");

// Send the message.
queue.Send(msg, "Example Message Label");

// Get the message's Id property value.
string id = msg.Id;

// Simulate doing other work so the message has time to arrive.
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(10.0));

// Peek at the message.
msg = queue.PeekById(id);

備註

使用 PeekById(String) 可在不從隊列中移除的情況下,讀取具有已知訊息識別碼的訊息。 訊息的識別碼在訊息排隊企業中是唯一的,因此隊列中最多只有一則符合該 id 參數的訊息。 若隊列目前不包含該訊息,此過載會拋出例外。

另外兩種方法可以讓你在隊列中窺訊息: Peek 和 PeekByCorrelationId(String)。 此 Peek 方法會回傳佇列中的第一個訊息; PeekByCorrelationId(String) 回傳因向佇列發送訊息而產生的確認、報告或應用程式產生的回應訊息。

下表顯示此方法是否可在多種工作群組模式中使用。

工作群組模式 Available
本機電腦 Yes
本地電腦與直接格式名稱 Yes
遠端電腦 No
遠端電腦與直接格式名稱 Yes

另請參閱

適用於

PeekById(String, TimeSpan)

窺視訊息識別碼與參數相符 id 的訊息。 等待訊息出現在佇列中或發生逾時。

public:
 System::Messaging::Message ^ PeekById(System::String ^ id, TimeSpan timeout);
public System.Messaging.Message PeekById(string id, TimeSpan timeout);
member this.PeekById : string * TimeSpan -> System.Messaging.Message
Public Function PeekById (id As String, timeout As TimeSpan) As Message

參數

id
String

訊息的一 Id 瞥。

timeout
TimeSpan

TimeSpan A表示等待新訊息可檢查的時間。

傳回

Message其Id性質與參數相符id。

例外狀況

參數 id 為 null。

參數指定的 timeout 值不成立,可能 timeout 小 Zero 於或大於 InfiniteTimeout。

該訊息 id 不存在於佇列中,且未在參數指定 timeout 期間過期前抵達。

存取訊息佇列方法時發生錯誤。

範例

下列程式代碼範例示範 如何使用 PeekById(String, TimeSpan)。


// Connect to a queue on the local computer.
MessageQueue^ queue = gcnew MessageQueue(".\\exampleQueue");

// Create a new message.
Message^ msg = gcnew Message("Example Message Body");

// Send the message.
queue->Send(msg, "Example Message Label");

// Get the message's Id property value.
String^ id = msg->Id;

// Peek at the message.
msg = queue->PeekById(id, TimeSpan::FromSeconds(10.0));

queue->Close();

// Connect to a queue on the local computer.
MessageQueue queue = new MessageQueue(".\\exampleQueue");

// Create a new message.
Message msg = new Message("Example Message Body");

// Send the message.
queue.Send(msg, "Example Message Label");

// Get the message's Id property value.
string id = msg.Id;

// Peek at the message.
msg = queue.PeekById(id, TimeSpan.FromSeconds(10.0));

備註

使用 PeekById(String) 可在不從隊列中移除的情況下,讀取具有已知訊息識別碼的訊息。 訊息的識別碼在訊息排隊企業中是唯一的,因此隊列中最多只有一則符合該 id 參數的訊息。 若隊列目前未包含該訊息,且在逾時發生前沒有新訊息抵達,則會拋出異常。

該 timeout 參數未指定此方法的總執行時間。 它指定等待新訊息到達隊列的時間。 每當有新訊息抵達時,此方法會檢查該訊息的參數Id是否符合。id 若未完成,則重新開始逾時,等待另一則新訊息抵達。 因此,如果在逾時期內持續有新訊息抵達,這個方法有可能無限期地持續運行,無論是直到逾時期結束且沒有新訊息到達,或直到收到符合 Id 參數的 id 訊息。

另外兩種方法可以讓你在隊列中窺訊息: Peek 和 PeekByCorrelationId(String)。 此 Peek 方法會回傳佇列中的第一個訊息; PeekByCorrelationId(String) 回傳因向佇列發送訊息而產生的確認、報告或應用程式產生的回應訊息。

下表顯示此方法是否可在多種工作群組模式中使用。

工作群組模式 Available
本機電腦 Yes
本地電腦與直接格式名稱 Yes
遠端電腦 No
遠端電腦與直接格式名稱 Yes

另請參閱

適用於