我试试这个: MessageQueue mq = new MessageQueue(".\Journal$"); mq.Purge();
它在 XP 上运行良好。 但是,在Windows 2003服务器上,我总是遇到这个错误: “工作组安装计算机不支持该操作。”
最佳答案
系统队列的正确格式:
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())
{
while (messageReader.MoveNext())
{
Message m = messageReader.Current;
if (m.ArrivedTime.AddDays(archiveAfterHowManyDays) < DateTime.Now)
{
queue.ReceiveById(m.Id);
}
}
}
}
关于.net - 如何在工作组安装上以编程方式清除 MSMQ 系统队列日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1131384/