如何:以编程方式接收消息

更新:2007 年 11 月

可以使用名为 Receive 的同步方法查看队列内容。针对某个队列调用 Receive 方法时,系统会从该队列中移除第一条消息并将该消息返回给您。此消息对查看该队列的其他组件不再可用。

说明:

此外,在不从队列中移除第一条消息的情况下还可以查看该消息。有关更多信息,请参见如何:查看消息。还可以异步接收消息。有关更多信息,请参见如何:异步接收消息

如果调用 Receive 方法时队列上没有可用的消息,该方法将一直等到有消息到达队列。如果仅希望该方法等待一段指定的时间间隔,可指定一个超时期限。超时期限被指定为 TimeSpan 对象。

从队列中读取消息时,在操作消息的过程中有一个格式化程序对象用来序列化和反序列化该消息的内容。有关更多信息,请参见读取和检索消息介绍

Receive 方法有以下几种形式:

  • 具有几个可用于指定诸如超时期限等内容的基本重载的方法

  • 一个名为 ReceiveById 的方法,通过该方法可按消息的标识符检索特定消息

  • 一个名为 ReceiveByCorrelationId 的方法,通过该方法可按相关 ID 检索消息

有关相关 ID 的说明,请参见消息队列日记存储

以编程方式接收消息

  1. 创建 MessageQueue 组件的一个实例,并将其 Path 属性设置为要引用的队列。有关更多信息,请参见如何:创建 MessageQueue 组件实例

  2. 指定用于检索消息的格式化程序。有关更多信息,请参见如何:为检索到的消息指定格式化程序

  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 操作系统”>“消息队列”中。有关更多信息,请参见如何:在代码中插入代码段 (Visual Basic)

请参见

任务

如何:查看消息

如何:异步接收消息

如何:创建 MessageQueue 组件实例

如何:为检索到的消息指定格式化程序

其他资源

读取和接收消息