123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- package region
- import (
- "bytes"
- "strconv"
- "time"
- "go-common/app/interface/main/app-show/conf"
- "go-common/library/log"
- binfoc "go-common/library/log/infoc"
- )
- type infoc struct {
- mid string
- rid string
- tid string
- pn string
- hotavid []int64
- newavid []int64
- now string
- }
- // Infoc write data for Hadoop do analytics
- func (s *Service) infoc(mid int64, hotavid, newavid []int64, rid, tid int, pull bool, now time.Time) {
- var pn string
- if pull {
- pn = "1"
- } else {
- pn = "2"
- }
- select {
- case s.logCh <- infoc{strconv.FormatInt(mid, 10), strconv.Itoa(rid), strconv.Itoa(tid), pn, hotavid, newavid, strconv.FormatInt(now.Unix(), 10)}:
- default:
- log.Warn("infoc log buffer is full")
- }
- }
- // writeInfoc
- func (s *Service) infocproc() {
- const (
- noItem1 = `{"section":{"rid":`
- noItem2 = `,"tagid":`
- noItem3 = `,"mid":`
- noItem4 = `,"pn":`
- noItem5 = `,"hot_avids":[],"item_avids":[]}}`
- )
- var (
- msg1 = []byte(`{"section":{"rid":`)
- msg2 = []byte(`,"tagid":`)
- msg3 = []byte(`,"mid":`)
- msg4 = []byte(`,"pn":`)
- msg5 = []byte(`,"hot_avids":[`)
- msg6 = []byte(`,`)
- msg7 = []byte(`],"item_avids":[`)
- msg8 = []byte(`,`)
- msg9 = []byte(`]}}`)
- inf2 = binfoc.New(conf.Conf.FeedInfoc2)
- buf bytes.Buffer
- list string
- )
- for {
- i, ok := <-s.logCh
- if !ok {
- log.Warn("infoc proc exit")
- return
- }
- switch v := i.(type) {
- case infoc:
- if len(v.newavid) > 0 {
- buf.Write(msg1)
- buf.WriteString(v.rid)
- buf.Write(msg2)
- buf.WriteString(v.tid)
- buf.Write(msg3)
- buf.WriteString(v.mid)
- buf.Write(msg4)
- buf.WriteString(v.pn)
- buf.Write(msg5)
- for _, v := range v.hotavid {
- buf.WriteString(strconv.FormatInt(v, 10))
- buf.Write(msg6)
- }
- if len(v.hotavid) > 0 {
- buf.Truncate(buf.Len() - 1)
- }
- buf.Write(msg7)
- for _, v := range v.newavid {
- buf.WriteString(strconv.FormatInt(v, 10))
- buf.Write(msg8)
- }
- buf.Truncate(buf.Len() - 1)
- buf.Write(msg9)
- list = buf.String()
- buf.Reset()
- } else {
- list = noItem1 + v.rid + noItem2 + v.tid + noItem3 + v.mid + noItem4 + v.pn + noItem5
- }
- inf2.Info(v.now, list)
- }
- }
- }
|