MessageQueue.ReceiveByLookupId 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
在 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
参数
返回
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。
- transaction
- MessageQueueTransaction
返回
由传入的 lookupId
和 action
参数指定的 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。
- transactionType
- MessageQueueTransactionType
MessageQueueTransactionType 值之一,它描述与消息关联的事务上下文的类型。
返回
由传入的 action
和 lookupId
参数指定的 Message。
例外
未安装 MSMQ 3.0。
未能找到具有指定 lookupId
的消息。
访问“消息队列”方法时出错。
注解
使用此方法读取具有已知查找标识符的消息,并使用 参数 transactionType
定义的事务上下文将其从队列中删除。 如果消息不在队列中,此方法将立即引发异常。
LookupId消息的 属性对于消息所在的队列是唯一的,因此队列中最多会有一条消息与给定lookupId
参数匹配。
若要读取具有指定标识符的消息而不将其从队列中删除,请使用 PeekByLookupId 方法。 没有与调用 PeekByLookupId返回的消息关联的事务上下文。 由于 PeekByLookupId 不会从队列中删除任何消息,因此如果中止事务,则不会回滚任何消息。
如果已将外部事务上下文附加到要用于接收消息的线程,则为 transactionType
参数指定 Automatic
。 指定 Single
是否要以单个内部事务的形式接收消息。 可以指定 None
是否要从事务上下文之外的事务队列接收消息。
如果调用此方法以接收来自事务队列的消息,则事务中止时收到的消息将返回到队列。 在提交事务之前,不会从队列中永久删除该消息。
下表显示了此方法在各种工作组模式下是否可用。
工作组模式 | 可用 |
---|---|
本地计算机 | 是 |
本地计算机和直接格式名称 | 是 |
远程计算机 | 否 |
远程计算机和直接格式名称 | 是 |