void PurgeMessages(Queue queue) { var isOk = IsOkWithUser("This will delete all the messages from the queue {0} - press OK to continue...", queue.QueueName); if (!isOk) { return; } Task.Factory .StartNew(() => { try { using (var msmqQueue = new MessageQueue(queue.QueuePath)) { msmqQueue.Purge(); } return new { Notification = NotificationEvent.Success("Queue {0} was purged", queue.QueueName), Success = true, }; } catch (Exception e) { return new { Notification = NotificationEvent.Fail(e.ToString(), "Something went wrong while attempting to purge queue {0}", queue.QueueName), Success = false, }; } }) .ContinueWith(r => { var result = r.Result; Messenger.Default.Send(result.Notification); if (result.Success) { Messenger.Default.Send(new QueuePurged(queue)); } }, Context.UiThread); }
void DeleteQueue(Queue queue) { var isOk = IsOkWithUser("This will DELETE the queue {0} completely - press OK to continue...", queue.QueueName); if (!isOk) { return; } Task.Factory .StartNew(() => { try { MessageQueue.Delete(queue.QueuePath); return new { Success = true, Notification = NotificationEvent.Success("Queue {0} was deleted", queue.QueueName) }; } catch (Exception e) { return new { Success = false, Notification = NotificationEvent.Fail(e.ToString(), "Something went wrong while attempting to delete queue {0}", queue.QueueName), }; } }) .ContinueWith(r => { var result = r.Result; Messenger.Default.Send(result.Notification); if (result.Success) { Messenger.Default.Send(new QueueDeleted(queue)); } }, Context.UiThread); }
void LoadMessages(Queue queue) { Task.Factory .StartNew(() => { var messageQueue = new MessageQueue(queue.QueuePath); messageQueue.MessageReadPropertyFilter = DefaultFilter(); var list = new List<Message>(); using (var enumerator = messageQueue.GetMessageEnumerator2()) { while (enumerator.MoveNext()) { var message = enumerator.Current; list.Add(GenerateMessage(message, queue.QueuePath)); } } return new { Messages = list }; }) .ContinueWith(t => { if (!t.IsFaulted) { var result = t.Result; queue.SetMessages(result.Messages); return NotificationEvent.Success("{0} messages loaded from {1}", result.Messages.Count, queue.QueueName); } var details = t.Exception.ToString(); return NotificationEvent.Fail(details, "Could not load messages from {0}: {1}", queue.QueueName, t.Exception); }, Context.UiThread) .ContinueWith(t => Messenger.Default.Send(t.Result), Context.UiThread); }
public DeleteQueueRequested(Queue queue) { this.queue = queue; }
public UpdateMessageRequested(Message message, Queue queue) { this.message = message; this.queue = queue; }
public QueueDeleted(Queue queue) { this.queue = queue; }
public PurgeMessagesRequested(Queue queue) { this.queue = queue; }
void UpdateMessage(Message message, Queue queueToReload) { Task.Factory .StartNew(() => { if (!message.CouldDeserializeBody) { throw new InvalidOperationException( string.Format( "Body of message with ID {0} was not properly deserialized, so it's not safe to try to update it...", message.Id)); } using (var queue = new MessageQueue(message.QueuePath)) { queue.MessageReadPropertyFilter = LosslessFilter(); using (var transaction = new MessageQueueTransaction()) { transaction.Begin(); try { var msmqMessage = queue.ReceiveById(message.Id, transaction); var newMsmqMessage = new System.Messaging.Message { Label = msmqMessage.Label, Extension = msmqMessage.Extension, TimeToBeReceived = msmqMessage.TimeToBeReceived, UseDeadLetterQueue = msmqMessage.UseDeadLetterQueue, UseJournalQueue = msmqMessage.UseJournalQueue, }; EncodeBody(newMsmqMessage, message); queue.Send(newMsmqMessage, transaction); transaction.Commit(); } catch { transaction.Abort(); throw; } } } return new { Message = message, Queue = queueToReload, Notification = NotificationEvent.Success("Fetched message with ID {0} and put an updated version back in the queue", message.Id), }; }) .ContinueWith(a => { if (a.Exception != null) { Messenger.Default.Send(NotificationEvent.Fail(a.Exception.ToString(), "Something went wrong while attempting to update message with ID {0}", message.Id)); return; } var result = a.Result; Messenger.Default.Send(new ReloadMessagesRequested(result.Queue)); Messenger.Default.Send(result.Notification); }, Context.UiThread); }
public ReloadMessagesRequested(Queue queue) { this.queue = queue; }
public QueuePurged(Queue queue) { this.queue = queue; }