public void Push(MsgItem msg) { msg = MsgHelper.GetMsgItem(msg); Queue<MsgItem> msgs; try { msgs = cache.Get<Queue<MsgItem>>(MsgKey) ?? new Queue<MsgItem>(); } catch (Exception ex) { msgs = new Queue<MsgItem>(); } msgs.Enqueue(msg); if (msgs.Count > MaxLength) { //多余的 消息放到数据库缓存 准备存到数据库中 IEnumerable<MsgItem> msgsToDBTemp = msgs.Take(msgs.Count - MaxLength).AsEnumerable<MsgItem>(); Queue<MsgItem> msgsToDB = cache.Get<Queue<MsgItem>>(DBKey) ?? new Queue<MsgItem>(); foreach (MsgItem item in msgsToDBTemp) { msgsToDB.Enqueue(msgs.Dequeue()); } if (msgsToDB.Count >= MaxLength) { //写入数据库操作 //并清0 缓存 msgsToDB.Clear(); } cache.Add(DBKey, msgsToDB); } cache.Add(MsgKey, msgs); }
public static IEnumerable<MsgItem> GetNextAll(MsgItem msgItem ) { if (IsGuid(msgItem.Id.ToString())) { //查询数据库 得到所有以当前msgItem.Id为parent_id的MsgItems 发送时间升序排列 并赋值给_nextAllItem //创建上下文 } return new List<MsgItem>(); }
public static MsgItem GetMsgItem(MsgItem msgItem) { lock (_root) { msgItem.Id = Guid.NewGuid(); msgItem.Pre = _preMsgItem; msgItem.SendTime = DateTime.Now; _preMsgItem = msgItem; return msgItem; } }
static MsgHelper() { _preMsgItem = GetPreItem(); }