public bool AddTaskQueue(string queueName, string[] values) { try { Log.Info(string.Format("LtTaskQueue.AddTaskQueue,count:{0}", values.Count())); ConcurrentBag <TaskQueue> list = new ConcurrentBag <TaskQueue>(); Parallel.ForEach(values, value => //foreach ( string value in values) { TaskQueue t = new TaskQueue() { QueueName = queueName, Value = value, CreatedOn = DateTime.Now, LastUpdatedOn = DateTime.Now, Status = 0, }; list.Add(t); }); Log.Info(string.Format("LtTaskQueue.AddTaskQueue.list ConcurrentBag<TaskQueue>,count:{0}", list.Count())); using (var db = new MQS_DBEntities()) { BulkInsert(db.Database.Connection.ConnectionString, "TaskQueues", list.ToList()); } WaitHandle.Set(); return(true); } catch (Exception ex) { Log.Exception(ex); return(false); } }
private static bool BeforEnqueue(IQueueMini queueMini, object value) { TaskQueue taskQueue = value as TaskQueue; if (taskQueue == null) { throw new Exception("转化为TaskQueue实体失败"); } using (var db = new MQS_DBEntities()) { db.Configuration.AutoDetectChangesEnabled = false; db.Configuration.ValidateOnSaveEnabled = false; string sql; if (Initialized) { sql = string.Format("update dbo.TaskQueues set status=1 where status=0 and taskQueueId={0}", taskQueue.TaskQueueId); } else { sql = string.Format("update dbo.TaskQueues set status=1 where taskQueueId={0}", taskQueue.TaskQueueId); } int successCount = db.Database.ExecuteSqlCommand(sql); if (successCount == 0) { throw new Exception("入队失败,数据库找不到该id:" + taskQueue.TaskQueueId); } } return(true); }
private TaskQueue GetLastTaskQueue() { using (var db = new MQS_DBEntities()) { var taskQueue = (from t in db.TaskQueues orderby t.CreatedOn descending select t).FirstOrDefault(); return(taskQueue); } }
/// <summary> /// 初始化 /// </summary> private static void Initialize() { using (var db = new MQS_DBEntities()) { var list = (from t in db.TaskQueues where t.Status == 1 orderby t.CreatedOn select t).ToList(); list.ForEach(t => EnqueueStatic(t.QueueName, JsonConvert.SerializeObject(t))); } Initialized = true; }
private static List <TaskQueue> GetNeedEnqueue() { using (var db = new MQS_DBEntities()) { db.Configuration.LazyLoadingEnabled = false; db.Configuration.AutoDetectChangesEnabled = false; db.Configuration.ValidateOnSaveEnabled = false; var list = (from t in db.TaskQueues where t.Status == 0 orderby t.CreatedOn select t).Take(200).ToList(); return(list); } }
private static void AfterDequeue(IQueueMini queueMini, object value) { try { if (value == null) { throw new Exception("出队内容为null"); } TaskQueue taskQueue = value as TaskQueue; if (taskQueue == null) { throw new Exception("出队时转化为TaskQueue实体失败"); } using (var db = new MQS_DBEntities()) { db.Configuration.AutoDetectChangesEnabled = false; db.Configuration.ValidateOnSaveEnabled = false; int successCount = db.Database.ExecuteSqlCommand(string.Format("update dbo.TaskQueues set status=2 where taskQueueId={0}", taskQueue.TaskQueueId)); if (successCount == 0) { throw new Exception("出队失败,数据库找不到该id:" + taskQueue.TaskQueueId); } } } catch (Exception ex) { Log.Error(ex.Message); if (value != null) { bool reTrySuccess = Convert.ToBoolean(EnqueueStatic(queueMini.Name, value.ToString()).Value); if (!reTrySuccess) { Log.Error("尝试重复入队失败"); } } } }