panlei
2019-08-08 e5249a1d2c507ac51689214680c00fcd1b3ab2ef
测试多线程
1个文件已修改
40 ■■■■■ 已修改文件
main.go 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main.go
@@ -57,33 +57,41 @@
    var msg []byte
    var err error
    msgChan := make(chan []byte,100)
    for {
        select {
        // case <-ctx.Done():
        //     return
        default:
            msg, err = c.Recv()
            msgChan <- msg
            if err != nil {
                logger.Info("recv error : ", err)
                fmt.Println("recv error : ", err)
                continue
            } else {
                arg := ruleserver.SdkDatas{}
                //paramFormat(msg, &arg)
                logger.Error()
                start := time.Now()
                m := paramFormat(msg, &arg)
                // 进行规则处理判断(打上规则的标签)
                ruleserver.Judge(&arg,&m) // 把sdkMessage传进去,方便缓存数据时拼出一个resultMag
                // 把arg里的打的标签拿出来给m再封装一层
                resultMsg := ruleserver.ResultMsg{SdkMessage: &m, RuleResult: arg.RuleResult}
                logger.Debug("比对完所用时间:",time.Since(start))
                // 将打完标签的数据插入到ES
                insertdata.InsertToEs(resultMsg)
                logger.Debug("插入完Es所用时间:",time.Since(start))
                //事件推送
                //go labelFilter.Judge(resultMsg)
                wg := sync.WaitGroup{}
                for msg := range msgChan {
                    wg.Add(1)
                    go func() {
                        logger.Debug("当前时间戳:",time.Now().Unix())
                        arg := ruleserver.SdkDatas{}
                        //paramFormat(msg, &arg)
                        start := time.Now()
                        m := paramFormat(msg, &arg)
                        // 进行规则处理判断(打上规则的标签)
                        ruleserver.Judge(&arg,&m) // 把sdkMessage传进去,方便缓存数据时拼出一个resultMag
                        // 把arg里的打的标签拿出来给m再封装一层
                        resultMsg := ruleserver.ResultMsg{SdkMessage: &m, RuleResult: arg.RuleResult}
                        logger.Debug("规则判断完所用时间:",time.Since(start))
                        // 将打完标签的数据插入到ES
                        insertdata.InsertToEs(resultMsg)
                        logger.Debug("插入完Es所用时间:",time.Since(start))
                        //事件推送
                        //go labelFilter.Judge(resultMsg)
                        wg.Done()
                    }()
                }
            }
        }
    }