/// <summary> /// De-queue the object /// </summary> public object Dequeue(string queueName) { if (String.IsNullOrEmpty(queueName)) { throw new ArgumentNullException(nameof(queueName)); } // Open the queue this.Open(queueName); String queueDirectory = Path.Combine(this.m_configuration.QueuePath, queueName); // Serialize var queueFile = Directory.GetFiles(queueDirectory).FirstOrDefault(); if (queueFile == null) { return(null); } this.m_tracer.TraceInfo("Will dequeue {0}", Path.GetFileNameWithoutExtension(queueFile)); object retVal = null; using (var fs = File.OpenRead(queueFile)) { retVal = QueueEntry.Load(fs).ToObject(); } File.Delete(queueFile); return(retVal); }
/// <summary> /// Dequeue by identifier /// </summary> public Queue.DispatcherQueueEntry DequeueById(string queueName, string correlationId) { try { if (String.IsNullOrEmpty(queueName)) { throw new ArgumentNullException(nameof(queueName)); } // Open the queue this.Open(queueName); String queueDirectory = Path.Combine(this.m_configuration.QueuePath, queueName); // Serialize String queueFile = null; if (String.IsNullOrEmpty(correlationId)) { queueFile = Directory.GetFiles(queueDirectory).FirstOrDefault(); } else { queueFile = Path.Combine(queueDirectory, correlationId); } if (queueFile == null || !File.Exists(queueFile)) { return(null); } this.m_tracer.TraceInfo("Will dequeue {0}", Path.GetFileNameWithoutExtension(queueFile)); QueueEntry retVal = null; try { using (var fs = File.OpenRead(queueFile)) { retVal = QueueEntry.Load(fs); } } finally { File.Delete(queueFile); } return(new Core.Queue.DispatcherQueueEntry(Path.GetFileNameWithoutExtension(queueFile), queueName, retVal.CreationTime, retVal.Type, retVal.ToObject())); } catch (Exception e) { this.m_tracer.TraceError("Error de-queueing {0} - {1}", queueName, e); return(null); } }
/// <summary> /// Get a queue entry /// </summary> public DispatcherQueueEntry GetQueueEntry(string queueName, string correlationId) { var filePath = Path.Combine(this.m_configuration.QueuePath, queueName, correlationId); if (File.Exists(filePath)) { using (var fs = File.OpenRead(filePath)) { var entry = QueueEntry.Load(fs); return(new DispatcherQueueEntry(correlationId, queueName, entry.CreationTime, entry.Type, entry.XmlData)); } } throw new KeyNotFoundException($"{queueName}\\{correlationId} doesn't exist"); }
/// <summary> /// Get all queue entries /// </summary> public IEnumerable <Queue.DispatcherQueueEntry> GetQueueEntries(string queueName) { foreach (var f in Directory.GetFiles(Path.Combine(this.m_configuration.QueuePath, queueName))) { QueueEntry entry = null; try { using (var fs = File.OpenRead(f)) entry = QueueEntry.Load(fs); } catch { continue; } yield return(new Core.Queue.DispatcherQueueEntry(Path.GetFileNameWithoutExtension(f), queueName, entry.CreationTime, entry.Type, entry.XmlData)); } }