Cần phải dọn dẹp hàng tuần tạp chí Hàng đợi hệ thống.Làm thế nào để dọn dẹp một tạp chí hàng đợi hệ thống MSMQ theo chương trình?
5
A
Trả lời
1
MessageQueue mq = new MessageQueue(".\\Journal$");
mq.Purge();
hoặc
MessageQueue mq = new MessageQueue(".\\myQueue\\Journal$");
mq.Purge();
nếu nó cho một hàng đợi mà bạn đã tạo. Đảm bảo người dùng có quyền chính xác. Xem: http://msdn.microsoft.com/en-us/library/system.messaging.messagequeue.aspx
1
MessageQueue mq = new MessageQueue("DIRECT=OS:computername\SYSTEM$;JOURNAL");
mq.Purge();
5
Định dạng chính xác cho hàng đợi hệ thống:
FormatName:Direct=os:.\\System$;JOURNAL
Tôi đã thử nghiệm định dạng này trên Windows 7 và Windows 2003.
(dấu chấm sau os: có nghĩa là localhost/local computer)
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();
hoặc nếu bạn muốn giữ lại N ngày của thông điệp bạn có thể làm điều này:
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++;
}
}
}
}
Định dạng đúng: var mq = new MessageQueue ("FormatName: Direct = os:. \\ Hệ thống $; JOURNAL "); –