2009-06-30 14 views

उत्तर

1
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

1

Answerd here

MessageQueue mq = new MessageQueue("DIRECT=OS:computername\SYSTEM$;JOURNAL"); 
mq.Purge(); 
+0

सही स्वरूप: वर MQ = नए MessageQueue ("FormatName: प्रत्यक्ष = ओएस:। \\ सिस्टम $; जर्नल "); –

5

सही प्रारूप प्रणाली कतारों के लिए:

FormatName:Direct=os:.\\System$;JOURNAL 

मैं विंडोज 7 और विंडोज 2003

(डॉट पर इस प्रारूप परीक्षण किया है ओएस के बाद: स्थानीयहोस्ट/स्थानीय कंप्यूटर का मतलब है)

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(); 

या आप संदेशों के एन दिनों आप ऐसा कर सकते हैं रखना चाहते हैं:

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++; 
      } 
     } 
    } 
}