MessageQueue.ReceiveByLookupId 方法

定义

在 MSMQ 3.0 中引入。 接收队列中特定的消息。 消息可通过查询标识符来指定,也可以通过其相对于队首或队尾的位置来指定。

重载

ReceiveByLookupId(Int64)

在 MSMQ 3.0 中引入。 从非事务性队列中接收与给定的查找标识符匹配的消息。

ReceiveByLookupId(MessageLookupAction, Int64, MessageQueueTransaction)

在 MSMQ 3.0 中引入。 从事务性队列中接收特定的消息。 消息可通过查询标识符来指定,也可以通过其相对于队首或队尾的位置来指定。

ReceiveByLookupId(MessageLookupAction, Int64, MessageQueueTransactionType)

在 MSMQ 3.0 中引入。 使用指定的事务上下文从队列中接收特定的消息。 消息可通过查询标识符来指定,也可以通过其相对于队首或队尾的位置来指定。

ReceiveByLookupId(Int64)

在 MSMQ 3.0 中引入。 从非事务性队列中接收与给定的查找标识符匹配的消息。

public:
 System::Messaging::Message ^ ReceiveByLookupId(long lookupId);
public System.Messaging.Message ReceiveByLookupId (long lookupId);
member this.ReceiveByLookupId : int64 -> System.Messaging.Message
Public Function ReceiveByLookupId (lookupId As Long) As Message

参数

lookupId
Int64

要接收的消息的 LookupId

返回

Message,其 LookupId 属性匹配传入的 lookupId 参数。

例外

未安装 MSMQ 3.0。

未能找到具有指定 lookupId 的消息。

访问“消息队列”方法时出错。

注解

使用此方法可读取具有已知查找标识符的消息,并将其从队列中删除。 如果消息不在队列中,此方法将立即引发异常。

LookupId消息的 属性对于消息所在的队列是唯一的,因此队列中最多会有一条消息与给定lookupId参数匹配。

若要读取具有指定查找标识符的消息而不将其从队列中删除,请使用 PeekByLookupId 方法。

下表显示了此方法是否在各种工作组模式下可用。

工作组模式 可用
本地计算机
本地计算机和直接格式名称
远程计算机
远程计算机和直接格式名称

另请参阅

适用于

ReceiveByLookupId(MessageLookupAction, Int64, MessageQueueTransaction)

在 MSMQ 3.0 中引入。 从事务性队列中接收特定的消息。 消息可通过查询标识符来指定,也可以通过其相对于队首或队尾的位置来指定。

public:
 System::Messaging::Message ^ ReceiveByLookupId(System::Messaging::MessageLookupAction action, long lookupId, System::Messaging::MessageQueueTransaction ^ transaction);
public System.Messaging.Message ReceiveByLookupId (System.Messaging.MessageLookupAction action, long lookupId, System.Messaging.MessageQueueTransaction transaction);
member this.ReceiveByLookupId : System.Messaging.MessageLookupAction * int64 * System.Messaging.MessageQueueTransaction -> System.Messaging.Message
Public Function ReceiveByLookupId (action As MessageLookupAction, lookupId As Long, transaction As MessageQueueTransaction) As Message

参数

action
MessageLookupAction

一个 MessageLookupAction 值,指定读取队列中消息的方式。 指定以下值之一:

MessageLookupAction.Current:接收由 lookupId 指定的消息,然后将其从队列中移除。

MessageLookupAction.Next:接收 lookupId 所指定消息的后一条消息,然后将其从队列中移除。

MessageLookupAction.Previous:接收 lookupId 所指定消息的前一条消息,然后将其从队列中移除。

MessageLookupAction.First:接收队列中的第一条消息并将它从队列中移除。 lookupId 参数必须设置为 0。

MessageLookupAction.Last:接收队列中的最后一条消息并将它从队列中移除。 lookupId 参数必须设置为 0。

lookupId
Int64

要接收的消息的 LookupId,或者为 0。 访问队列中的第一条和最后一条消息时使用 0。

返回

由传入的 lookupIdaction 参数指定的 Message

例外

未安装 MSMQ 3.0。

未能找到具有指定 lookupId 的消息。

访问“消息队列”方法时出错。

- 或 -

该队列为非事务性队列。

action 参数不是 MessageLookupAction 成员之一。

注解

使用此方法读取具有已知查找标识符的消息,并使用 参数 transaction 定义的事务上下文将其从队列中删除。 如果消息不在队列中,此方法将立即引发异常。

LookupId消息的 属性对于消息所在的队列是唯一的,因此队列中最多会有一条消息与给定lookupId参数匹配。

由于此方法是在事务队列上调用的,因此如果事务中止,收到的消息将返回到队列。 在提交事务之前,不会从队列中永久删除消息。

若要读取具有指定标识符的消息而不将其从队列中删除,请使用 PeekByLookupId 方法。 没有与调用 PeekByLookupId返回的消息关联的事务上下文。 由于 PeekByLookupId 不从队列中删除任何消息,因此如果中止事务,则不会回滚任何消息。

下表显示了此方法是否在各种工作组模式下可用。

工作组模式 可用
本地计算机
本地计算机和直接格式名称
远程计算机
远程计算机和直接格式名称

另请参阅

适用于

ReceiveByLookupId(MessageLookupAction, Int64, MessageQueueTransactionType)

在 MSMQ 3.0 中引入。 使用指定的事务上下文从队列中接收特定的消息。 消息可通过查询标识符来指定,也可以通过其相对于队首或队尾的位置来指定。

public:
 System::Messaging::Message ^ ReceiveByLookupId(System::Messaging::MessageLookupAction action, long lookupId, System::Messaging::MessageQueueTransactionType transactionType);
public System.Messaging.Message ReceiveByLookupId (System.Messaging.MessageLookupAction action, long lookupId, System.Messaging.MessageQueueTransactionType transactionType);
member this.ReceiveByLookupId : System.Messaging.MessageLookupAction * int64 * System.Messaging.MessageQueueTransactionType -> System.Messaging.Message
Public Function ReceiveByLookupId (action As MessageLookupAction, lookupId As Long, transactionType As MessageQueueTransactionType) As Message

参数

action
MessageLookupAction

一个 MessageLookupAction 值,指定读取队列中消息的方式。 指定以下值之一:

MessageLookupAction.Current:接收由 lookupId 指定的消息,然后将其从队列中移除。

MessageLookupAction.Next:接收 lookupId 所指定消息的后一条消息,然后将其从队列中移除。

MessageLookupAction.Previous:接收 lookupId 所指定消息的前一条消息,然后将其从队列中移除。

MessageLookupAction.First:接收队列中的第一条消息并将它从队列中移除。 lookupId 参数必须设置为 0。

MessageLookupAction.Last:接收队列中的最后一条消息并将它从队列中移除。 lookupId 参数必须设置为 0。

lookupId
Int64

要接收的消息的 LookupId,或者为 0。 访问队列中的第一条和最后一条消息时使用 0。

transactionType
MessageQueueTransactionType

MessageQueueTransactionType 值之一,它描述与消息关联的事务上下文的类型。

返回

由传入的 actionlookupId 参数指定的 Message

例外

未安装 MSMQ 3.0。

未能找到具有指定 lookupId 的消息。

访问“消息队列”方法时出错。

action 参数不是 MessageLookupAction 成员之一。

- 或 -

transactionType 参数不是 MessageQueueTransactionType 成员之一。

注解

使用此方法读取具有已知查找标识符的消息,并使用 参数 transactionType 定义的事务上下文将其从队列中删除。 如果消息不在队列中,此方法将立即引发异常。

LookupId消息的 属性对于消息所在的队列是唯一的,因此队列中最多会有一条消息与给定lookupId参数匹配。

若要读取具有指定标识符的消息而不将其从队列中删除,请使用 PeekByLookupId 方法。 没有与调用 PeekByLookupId返回的消息关联的事务上下文。 由于 PeekByLookupId 不会从队列中删除任何消息,因此如果中止事务,则不会回滚任何消息。

如果已将外部事务上下文附加到要用于接收消息的线程,则为 transactionType 参数指定 Automatic 。 指定 Single 是否要以单个内部事务的形式接收消息。 可以指定 None 是否要从事务上下文之外的事务队列接收消息。

如果调用此方法以接收来自事务队列的消息,则事务中止时收到的消息将返回到队列。 在提交事务之前,不会从队列中永久删除该消息。

下表显示了此方法在各种工作组模式下是否可用。

工作组模式 可用
本地计算机
本地计算机和直接格式名称
远程计算机
远程计算机和直接格式名称

另请参阅

适用于