Files
go-common/app/service/main/coin/dao/databus.go
2019-04-22 18:49:16 +08:00

58 lines
1.4 KiB
Go

package dao
import (
"context"
"strconv"
"time"
"go-common/library/log"
)
// PubBigData pub msg into databus.
func (d *Dao) PubBigData(c context.Context, aid int64, msg interface{}) (err error) {
key := strconv.FormatInt(aid, 10)
if err = d.dbBigData.Send(c, key, msg); err != nil {
log.Error("dbBigData.Pub(%s, %v) error (%v)", key, msg, err)
PromError("dbus:PubBigData")
}
return
}
// PubCoinJob pub job msg into databus.
func (d *Dao) PubCoinJob(c context.Context, aid int64, msg interface{}) (err error) {
key := strconv.FormatInt(aid, 10)
for i := 0; i < 3; i++ {
if err = d.dbCoinJob.Send(c, key, msg); err != nil {
log.Error("d.dbCoinJob.Pub(%s, %v) error (%v) times: %v", key, msg, err, i+1)
PromError("dbus:PubCoinJob")
time.Sleep(time.Millisecond * 50)
continue
}
break
}
return
}
// PubStat pub stat msg into databus.
func (d *Dao) PubStat(c context.Context, aid, tp, count int64) (err error) {
var s = &struct {
Type string `json:"type"`
ID int64 `json:"id"`
Count int64 `json:"count"`
Timestamp int64 `json:"timestamp"`
}{
ID: aid,
Count: count,
Timestamp: time.Now().Unix(),
}
// double write new databus.
if b, ok := d.Businesses[tp]; ok {
s.Type = b.Name
if err = d.stat.Send(c, strconv.FormatInt(aid, 10), s); err != nil {
log.Error("d.stat.Pub(%+v) error(%v)", s, err)
PromError("dbus:stat")
}
}
return
}