You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
2.1 KiB
101 lines
2.1 KiB
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) |
|
} |
|
} |
|
}
|
|
|