/// <summary> /// Dequeue Message /// </summary> /// <returns></returns> public virtual IQueueItem Dequeue(Priority priority) { Ptr ptr = Ptr.Empty; try { //using (TransactionScope tran = new TransactionScope()) //{ switch (priority) { case Priority.Normal: if (normalQ.TryDequeue(out ptr)) { return(DequeueScop(ptr)); } break; case Priority.Medium: if (mediumQ.TryDequeue(out ptr)) { return(DequeueScop(ptr)); } break; case Priority.High: if (highQ.TryDequeue(out ptr)) { return(DequeueScop(ptr)); } break; } return(null); //if (ptr.IsEmpty) //{ // return GetFirstItem(); //} //else //{ // return DequeueScop(ptr); //} //if (item == null) //{ // item = Dequeue(priority); //} //} } catch (Exception ex) { QLogger.Exception("PriorityQueue Dequeue error ", ex); } return(null); }
/// <summary> /// Dequeue Message /// </summary> /// <returns></returns> public virtual IQueueItem Dequeue() { Ptr ptr = Ptr.Empty; try { //using (TransactionScope tran = new TransactionScope()) //{ if (highQ.TryDequeue(out ptr)) { return(DequeueScop(ptr)); } else if (mediumQ.TryDequeue(out ptr)) { return(DequeueScop(ptr)); } else if (normalQ.TryDequeue(out ptr)) { return(DequeueScop(ptr)); } else { return(null); } //changed:syncCount: //if (ptr == Guid.Empty) // ptr = mediumQ.Dequeue(); //else if (ptr == Guid.Empty) // ptr = normalQ.Dequeue(); //if (ptr.IsEmpty) //{ // return GetFirstItem(); //} //else //{ // return DequeueScop(ptr); //} //if (item == null) //{ // Thread.Sleep(300); // return Dequeue(); //} //} } catch (Exception ex) { QLogger.Exception("PriorityQueue Dequeue error ", ex); } return(null); }
/// <summary> /// Dequeue Message /// </summary> /// <returns></returns> public virtual IQueueItem Dequeue(Ptr ptr) { try { return(DequeueScop(ptr)); } catch (TransactionAbortedException tex) { QLogger.Exception("PriorityQueue Dequeue error ", tex); } catch (Exception ex) { QLogger.Exception("PriorityQueue Dequeue error ", ex); } return(null); }
/// <summary> /// Dequeue Message /// </summary> /// <returns></returns> public virtual bool TryDequeue(out IQueueItem item) { Ptr ptr = Ptr.Empty; try { //using (TransactionScope tran = new TransactionScope()) //{ if (highQ.TryDequeue(out ptr)) { item = DequeueScop(ptr); return(item != null); } else if (mediumQ.TryDequeue(out ptr)) { item = DequeueScop(ptr); return(item != null); } else if (normalQ.TryDequeue(out ptr)) { item = DequeueScop(ptr); return(item != null); } else { item = null; return(false); } //} } catch (Exception ex) { QLogger.Exception("PriorityQueue Dequeue error ", ex); } item = null; return(false); }