123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package main
- import (
- "fmt"
- "io/ioutil"
- "jygit.jydev.jianyu360.cn/data_processing/common_utils/udp"
- "log"
- "net"
- "net/http"
- "project/config"
- "sync"
- "time"
- )
- var udptaskmap = &sync.Map{}
- type udpNode struct {
- data []byte
- addr *net.UDPAddr
- timestamp int64
- retry int
- }
- func checkMapJob() {
- //阿里云内网无法发送邮件
- if config.Conf.Mail.Send {
- for {
- udptaskmap.Range(func(k, v interface{}) bool {
- now := time.Now().Unix()
- node, _ := v.(*udpNode)
- if now-node.timestamp > 120 {
- node.retry++
- if node.retry > 5 {
- log.Println("udp重试失败", k)
- udptaskmap.Delete(k)
- res, err := http.Get(fmt.Sprintf("%s?to=%s&title=%s&body=%s", config.Conf.Mail.Api, config.Conf.Mail.To, "project-send-fail", k.(string)))
- if err == nil {
- defer res.Body.Close()
- read, err := ioutil.ReadAll(res.Body)
- log.Println("邮件发发送:", string(read), err)
- }
- } else {
- log.Println("udp重发", k)
- udpclient.WriteUdp(node.data, udp.OP_TYPE_DATA, node.addr)
- }
- } else if now-node.timestamp > 10 {
- log.Println("udp任务超时中..", k)
- }
- return true
- })
- time.Sleep(60 * time.Second)
- }
- }
- }
|