MSMQ:光标和优先级

时间:2016-12-14 09:39:06

标签: msmq

以下是枚举消息的代码。

MessageQueue  queue = // ... some local private queue
Cursor cursor = queue.CreateCursor();

Message msg = queue.Peek(timeout, cursor, PeekAction.Current);
while( msg != null )
{
  // ... process
  msg = queue.Peek(timeout, cursor, PeekAction.Next);
}

假设队列中有100条HIGH优先级消息和10000条LOW优先级消息。

所以它会按照以下顺序查看消息。

HIGH #1 HIGH #2 HIGH #3 ... HIGH #99 HIGH #100 LOW #101 LOW #102 ... LOW #10000

现在假设代码开始运行,它首先处理100个HIGH优先级消息,然后开始处理低优先级消息。

在某些时候,它会在下面查看低优先级。

LOW #8243 <-- cursor is here now LOW #8244 ... LOW #10000

现在新的HIGH优先级消息到达队列。

我的问题是:

下次调用queue.Peek(timeout, cursor, PeekAction.Current)时,是否会立即查看HIGH优先级消息?

0 个答案:

没有答案