共用方式為


HOW TO:以程式設計方式接收訊息

更新:2007 年 11 月

您可以使用名為 Receive 的同步方法查看佇列的內容。當您在佇列上呼叫 Receive 方法時,系統會從佇列移除第一個訊息,並將它傳送給您。其他也在查看佇列的元件就無法取得這個訊息。

注意事項:

您也可以查看佇列上的第一個訊息,而不需將它從佇列移除。如需詳細資訊,請參閱 HOW TO:窺視訊息。也可以非同步接收訊息。如需詳細資訊,請參閱 HOW TO:以非同步方式接收訊息

如果當您呼叫 Receive 方法時佇列上並沒有訊息,則方法會等候直到訊息到達佇列。如果只要方法等候指定的一段時間,您可以指定逾時時限。逾時時限是以 TimeSpan 物件來指定。

當您從佇列讀取訊息時,您會使用格式子物件來序列化和還原序列化訊息的內容以操作訊息。如需詳細資訊,請參閱讀取和擷取訊息簡介

Receive 方法有數種形式:

  • 具有數個多載的基本方法,可讓您指定諸如逾時週期的事項。

  • 稱為 ReceiveById 的方法,可讓您依照其識別項來擷取特定訊息。

  • 稱為 ReceiveByCorrelationId 的方法,可讓您依照相互關聯 ID 來擷取訊息。

如需相互關聯 ID 的說明,請參閱訊息佇列日誌儲存區

若要利用程式接收訊息

  1. 建立 MessageQueue 元件的執行個體,並將其 Path 屬性設定為您要參考的佇列。如需詳細資訊,請參閱 HOW TO:建立 MessageQueue 元件執行個體

  2. 指定要用來擷取您訊息的格式子。如需詳細資訊,請參閱 HOW TO:指定已擷取訊息的格式子

  3. 建立 Message 物件的執行個體來儲存所擷取的訊息。

  4. 呼叫 Receive 方法將訊息從佇列移除。

    秘訣

    若要指定 Receive 方法的逾時,請使用 TimeSpan 物件來指定要方法等候多久的時間。

    Dim mq As New System.Messaging.MessageQueue(".\MyQueue")
    mq.Send("1", "1")
    Dim m As System.Messaging.Message
    m = mq.Receive(New TimeSpan(0, 0, 3))
    m.Formatter = New _
       System.Messaging.XmlMessageFormatter(New String() _
       {"System.String,mscorlib"})
    Console.WriteLine(m.Body)
    
         System.Messaging.MessageQueue mq =
               new System.Messaging.MessageQueue(".\\MyQueue");
            mq.Send("1", "1");
            System.Messaging.Message m = mq.Receive(new TimeSpan(0, 0, 3));
            m.Formatter = new System.Messaging.XmlMessageFormatter(new string[] { "System.String,mscorlib" });
            Console.WriteLine(m.Body);
    

    這個程式碼範例也可做為 Visual Basic IntelliSense 程式碼片段。在程式碼片段選擇器中,它位於 [Windows 作業系統] > [訊息佇列] 中。如需詳細資訊,請參閱 HOW TO:在您的程式碼中插入程式碼片段 (Visual Basic)

請參閱

工作

HOW TO:窺視訊息

HOW TO:以非同步方式接收訊息

HOW TO:建立 MessageQueue 元件執行個體

HOW TO:指定已擷取訊息的格式子

其他資源

讀取和接收訊息