public MsmqMessageQueue(string serverName, Queue queue) { Queue = queue; Main = Msmq.Create(serverName, queue.Name, QueueAccessMode.ReceiveAndAdmin); _mainContent = Msmq.Create(serverName, queue.Name, QueueAccessMode.ReceiveAndAdmin); _mainContent.MessageReadPropertyFilter.ClearAll(); _mainContent.MessageReadPropertyFilter.Body = true; if (Main.UseJournalQueue) // Error when trying to use FormatName, strange as it should work according to MSDN. Temp solution for now. { Journal = new MessageQueue(string.Format(@"{0}\Private$\{1};JOURNAL", serverName, queue.Name)); _journalContent = new MessageQueue(string.Format(@"{0}\Private$\{1};JOURNAL", serverName, queue.Name)); _journalContent.MessageReadPropertyFilter.ClearAll(); _journalContent.MessageReadPropertyFilter.Body = true; } }
public bool CanAccessQueue(Dictionary <string, object> connectionSettings, string queueName) { var queue = Msmq.Create(connectionSettings["server"] as string, queueName, QueueAccessMode.ReceiveAndAdmin); return(queue != null ? queue.CanRead : false); }
public override MessageSubscription[] GetMessageSubscriptions(Dictionary <string, object> connectionSettings, IEnumerable <string> queues) { var server = connectionSettings[CS_SERVER] as string; List <MessageSubscription> r = new List <MessageSubscription>(); // Raven Persistance var ravenUrl = (string)connectionSettings.GetValue(NServiceBus_MSMQ_Manager.CS_RAVEN_PERSISTANCE, null) ?? "http://" + server + ":8080"; var db = new DocumentStore { Url = ravenUrl }; db.Initialize(); // MSMQ Persistance var msmqQ = MessageQueue.GetPrivateQueuesByMachine(server).Where(q => q.QueueName.EndsWith(".subscriptions")).Select(q => q.QueueName); foreach (var queueName in queues) { var queueSubscr = queueName + ".subscriptions"; // First check MSMQ if (msmqQ.Any(mq => mq.EndsWith(queueSubscr))) { MessageQueue q = Msmq.Create(server, queueSubscr, QueueAccessMode.ReceiveAndAdmin); q.MessageReadPropertyFilter.Label = true; q.MessageReadPropertyFilter.Body = true; try { foreach (var msg in q.GetAllMessages()) { var itm = new MessageSubscription(); itm.FullName = GetSubscriptionType(ReadMessageStream(msg.BodyStream)); itm.Name = ParseClassName(itm.FullName); itm.Subscriber = msg.Label; itm.Publisher = queueName; r.Add(itm); } } catch (Exception e) { OnError("Error occured when getting subcriptions", e, true); } } else // RavenDB { var headers = db.DatabaseCommands.Head("Raven/Databases/" + queueName); if (headers != null) { using (var s = db.OpenSession(queueName)) { //s.Advanced.AllowNonAuthoritativeInformation = false; //var doc = s.Load<Subscription>("subscriptions/88dc7793-0cbd-ec39-5dd2-6b982e1e3c76"); //if( doc != null ) // Console.Write("WOW"); var list = s.Advanced.LoadStartingWith <Subscription>("subscription", null, 0, 1024).ToArray(); foreach (var subr in list) //.StartsWith("Subscriptions/")) ) { { foreach (var client in subr.Clients) { var itm = new MessageSubscription(); itm.FullName = subr.MessageType.ToString(); itm.Name = ParseClassName(itm.FullName); itm.Subscriber = client.ToString(); itm.Publisher = queueName; r.Add(itm); } } } } } } //foreach( var queueName in MessageQueue.GetPrivateQueuesByMachine(server). // Where(q => q.QueueName.EndsWith(".subscriptions")).Select(q => q.QueueName) ) { //} return(r.ToArray()); }