batch to mongo

pull/455/head
skiffer-git 2 years ago committed by Xinwei Xiong(cubxxw-openim)
parent fa7c6b6f52
commit 1af6e628ff

@ -18,16 +18,17 @@ func (d *DataBases) BatchInsertChat(userID string, msgList []*pbMsg.MsgDataToMQ,
if len(msgList) > GetSingleGocMsgNum() { if len(msgList) > GetSingleGocMsgNum() {
return errors.New("too large") return errors.New("too large")
} }
isInit := false
currentMaxSeq, err := d.GetUserMaxSeq(userID) currentMaxSeq, err := d.GetUserMaxSeq(userID)
if err == nil { if err == nil {
} else if err == redis.ErrNil { } else if err == redis.ErrNil {
isInit = true
currentMaxSeq = 0 currentMaxSeq = 0
} else { } else {
return utils.Wrap(err, "") return utils.Wrap(err, "")
} }
//4999
remain := uint64(GetSingleGocMsgNum()) - (currentMaxSeq % uint64(GetSingleGocMsgNum())) remain := uint64(GetSingleGocMsgNum()) - (currentMaxSeq % uint64(GetSingleGocMsgNum()))
insertCounter := uint64(0) insertCounter := uint64(0)
msgListToMongo := make([]MsgInfo, 0) msgListToMongo := make([]MsgInfo, 0)
@ -43,6 +44,13 @@ func (d *DataBases) BatchInsertChat(userID string, msgList []*pbMsg.MsgDataToMQ,
if sMsg.Msg, err = proto.Marshal(m.MsgData); err != nil { if sMsg.Msg, err = proto.Marshal(m.MsgData); err != nil {
return utils.Wrap(err, "") return utils.Wrap(err, "")
} }
if isInit {
msgListToMongoNext = append(msgListToMongoNext, sMsg)
seqUidNext = getSeqUid(userID, uint32(currentMaxSeq))
log.Debug(operationID, "msgListToMongoNext ", seqUidNext, m.MsgData.Seq, m.MsgData.ClientMsgID, insertCounter, remain)
continue
}
if insertCounter < remain { if insertCounter < remain {
msgListToMongo = append(msgListToMongo, sMsg) msgListToMongo = append(msgListToMongo, sMsg)
insertCounter++ insertCounter++

Loading…
Cancel
Save