public bool WaitEnqueue(string queueName, int timeOut) { const int maxTimeOut = 60 * 60 * 1000; if (timeOut > maxTimeOut) { timeOut = maxTimeOut; } try { IQueueMini queueMini = GetQueueMiniByName(queueName); if (queueMini == null) { queueMini = CreatQueueMini(queueName); QueueMinis.Add(queueMini); } var value = queueMini.WaitEnqueue(timeOut); return(value); } catch (Exception ex) { Log.Exception(ex); return(false); } }
private static IQueueMini GetQueueMiniByName(string queueName) { if (string.IsNullOrWhiteSpace(queueName)) { throw new ArgumentNullException("queueName"); } return(QueueMinis.Find(q => q.Name == queueName)); }
private static IQueueMini CreatQueueMini(string queueName) { if (QueueMinis.Find(q => q.Name == queueName) != null) { throw new Exception("队列名称已存在"); } IQueueMini queueMini = new QueueMini(queueName); queueMini.BeforEnqueue += BeforEnqueue; queueMini.BeforDequeue += BeforDequeue; queueMini.AfterDequeue += AfterDequeue; return(queueMini); }
private static QueueModel EnqueueStatic(string queueName, string value) { try { if (string.IsNullOrWhiteSpace(value)) { throw new ArgumentNullException("value"); } TaskQueue taskQueue = JsonConvert.DeserializeObject <TaskQueue>(value); if (taskQueue == null) { throw new Exception("反序列化为TaskQueue失败"); } IQueueMini queueMini = GetQueueMiniByName(queueName); if (queueMini == null) { queueMini = CreatQueueMini(queueName); QueueMinis.Add(queueMini); } queueMini.Enqueue(taskQueue); return(new QueueModel() { Value = true, }); } catch (Exception ex) { Log.Exception(ex); return(new QueueModel() { Value = false, ErrorMessage = ex.Message, }); } }