game_sync/dbproxy/mq/c_invite.go

68 lines
1.4 KiB
Go

package mq
import (
"encoding/json"
"github.com/astaxie/beego/cache"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/game/dbproxy/svc"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
)
var InviteNumCache = cache.NewMemoryCache()
func init() {
mq.RegisterSubscriber(model.EvtBindInvite, 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.BindInvite
err = json.Unmarshal(msg.Body, &log)
if err != nil {
return
}
// 绑定
err = svc.BindInviteSnId(log.Platform, log.SnId, log.InviteSnId, log.Ts)
if err != nil {
logger.Logger.Errorf("BindInviteSnId error:%v", err)
return err
}
//name := fmt.Sprintf("%v", log.InviteSnId)
//b := InviteNumCache.Get(name)
//n, _ := b.(int32)
//if n > 0 {
// n++
//} else {
n, err := svc.GetInviteNum(log.Platform, log.InviteSnId)
if err != nil {
logger.Logger.Errorf("BindInviteSnId error:%v", err)
return err
}
//}
//InviteNumCache.Put(name, n, int64(time.Hour.Seconds()))
// 更新绑定数量
RabbitMQPublisher.Send(model.AckBindNum, &model.BindNum{
SnId: log.InviteSnId,
Num: n,
})
}
return nil
}, broker.Queue(model.EvtBindInvite), broker.DisableAutoAck(), rabbitmq.DurableQueue())
}