Если вы делаете это в C #, класс Queue<T>
должен работать:
Queue<Message> queue = GetMessageQueue();
while(queue.Count > 0)
{
Message message = queue.Dequeue();
// process message
}
Если вы планируете заполнять очередь из нескольких потоков, вы можете использовать ConcurrentQueue<T>
(или BlockingCollection<T>
) вместо этого.
Если вы используете класс MessageQueue для MSMQ, вы всегда можете использовать:
MessageQueue queue = ...
TimeSpan timeout = TimeSpan.FromMilliseconds(100); // Small timeout - can be very small
Message message = queue.Receive(timeout);
while (message != null)
{
// Process message...
message = queue.Receive(timeout);
}