game_sync/dbproxy/mq/c_loginlog.go

58 lines
1.2 KiB
Go

package mq
import (
"encoding/json"
"mongo.games.com/game/dbproxy/svc"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
)
func init() {
mq.RegisterSubscriber(model.LoginLogCollName, func(e broker.Event) (err error) {
msg := e.Message()
if msg != nil {
defer func() {
if err != nil {
mq.BackUp(e, err)
}
e.Ack()
recover()
}()
var log model.LoginLog
err = json.Unmarshal(msg.Body, &log)
if err != nil {
return
}
c := svc.LoginLogsCollection(log.Platform)
if c != nil {
err = c.Insert(log)
}
return
}
return nil
}, broker.Queue(model.LoginLogCollName), broker.DisableAutoAck(), rabbitmq.DurableQueue())
//for test
//RegisterSubscriber(model.LoginLogCollName, func(e broker.Event) (err error) {
// msg := e.Message()
// if msg != nil {
// var log model.LoginLog
// err = json.Unmarshal(msg.Body, &log)
// if err != nil {
// return
// }
//
// logger.Logger.Trace(log)
// return
// }
// return nil
//}, broker.Queue(model.LoginLogCollName+"_echo"), rabbitmq.DurableQueue())
//for test
}