![](/img/trans.png)
[英]How to purge MSMQ system queue journal programmatically on a workgroup installation?
[英]How to purge a MSMQ system queue journal programatically?
需要批量每周清除系統隊列日志。
系統隊列的正確格式:
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++;
}
}
}
}
MessageQueue mq = new MessageQueue(".\\Journal$");
mq.Purge();
要么
MessageQueue mq = new MessageQueue(".\\myQueue\\Journal$");
mq.Purge();
如果它是你創建的隊列。 確保用戶具有正確的權限。 請參閱: http : //msdn.microsoft.com/en-us/library/system.messaging.messagequeue.aspx
MessageQueue mq = new MessageQueue("DIRECT=OS:computername\SYSTEM$;JOURNAL");
mq.Purge();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.