Как прочитать последнее сообщение в MessageQueue - PullRequest
1 голос
/ 04 января 2012

Я пытаюсь прочитать сообщения в MessageQueue, начиная с самого нового. Я знаю, что могу использовать GetAllMessages (). Затем переберите. Но это довольно медленно, когда в очереди большое количество сообщений. Есть лучший способ сделать это?

Спасибо

Ответы [ 2 ]

1 голос
/ 04 января 2012

В MSMQ 3 есть функция, которая может быть тем, что вы ищете.Метод ReceiveByLookupId может получить последнее сообщение в очереди.

http://msdn.microsoft.com/en-us/library/3w50th9h.aspx

Вы должны использовать следующее действие:

MessageLookupAction.Last: получает последнеесообщение в очереди и удаляет его из очереди.Параметр lookupId должен быть установлен на 0.

Если вы используете более раннюю версию MSMQ, вам, вероятно, придется использовать Peek, аналогично тому, как в этом посте объясняется, как получить счетчик сообщений.очередь.Когда вы добрались до последнего, вы можете получить ReceiveById.

http://jopinblog.wordpress.com/2008/03/12/counting-messages-in-an-msmq-messagequeue-from-c/

0 голосов
/ 04 января 2012

Предполагая, что снижение производительности происходит в цикле между сообщениями: Нет необходимости перебирать все сообщения, если вам нужно только последнее. Поскольку GetAllMessages () возвращает массив типа Message, просто перейдите к последнему элементу в массиве по индексу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...