Необходимо выполнить еженедельную очистку журнала системной очереди.
Как программно очистить журнал системной очереди MSMQ?
Ответы (3)
Правильный формат для системных очередей:
FormatName:Direct=os:.\\System$;JOURNAL
Я тестировал этот формат на Windows 7 и Windows 2003.
(точка после os: означает локальный/локальный компьютер)
var systemJournalQueue = new MessageQueue("FormatName:Direct=os:.\\System$;JOURNAL");
var systemDeadLetterQueue = new MessageQueue("FormatName:Direct=os:.\\System$;DEADLETTER");
var systemDeadXLetterQueue =new MessageQueue("FormatName:Direct=os:.\\System$;DEADXACT"));
systemJournalQueue.Purge();
или если вы хотите сохранить N дней сообщений, вы можете сделать это:
private static void PurgeQueues(int archiveAfterHowManyDays, MessageQueue queue)
{
queue.Formatter = new XmlMessageFormatter(new Type[] { typeof(System.String) });
queue.MessageReadPropertyFilter.ArrivedTime = true;
using (MessageEnumerator messageReader = queue.GetMessageEnumerator2())
{
int counter = 0;
while (messageReader.MoveNext())
{
Message m = messageReader.Current;
if (m.ArrivedTime.AddDays(archiveAfterHowManyDays) < DateTime.Now)
{
queue.ReceiveById(m.Id);
counter++;
}
}
}
}
person
Chris Weber
schedule
11.05.2012
MessageQueue mq = new MessageQueue(".\\Journal$");
mq.Purge();
or
MessageQueue mq = new MessageQueue(".\\myQueue\\Journal$");
mq.Purge();
если это для очереди, которую вы создали. Убедитесь, что у пользователя есть правильные разрешения. См.: http://msdn.microsoft.com/en-us/library/system.messaging.messagequeue.aspx
person
HasaniH
schedule
30.06.2009
MessageQueue mq = new MessageQueue("DIRECT=OS:computername\SYSTEM$;JOURNAL");
mq.Purge();
person
Igal Serban
schedule
17.07.2009
Правильный формат: var mq = new MessageQueue(FormatName:Direct=os:.\\System$;JOURNAL);
- person Chris Weber; 12.05.2012