123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package util
- import (
- "fmt"
- "github.com/nats-io/nats.go"
- "github.com/vmihailenco/msgpack/v5"
- "time"
- "ydMonitoring/config"
- )
- var (
- Nats *nats.Conn
- url string
- )
- // 初始化
- func init() {
- url = config.Config.GetString("nats.url")
- fmt.Println("============Nats init============")
- var err error
- // 连接Nats服务器
- Nats, err = nats.Connect("nats://" + url)
- if err != nil {
- panic(any("nats 连接失败!"))
- }
- fmt.Println("nats OK!")
- }
- type T_Warning struct {
- T_tp int `xml:"T_tp"` // 报警类型 ->WarningList
- T_sn string `xml:"T_sn"` // 设备序列号
- T_D_name string `xml:"T_D_name"` // 设备名称
- T_id int `xml:"T_id"` // 传感器 ID
- T_DS_name string `xml:"T_DS_name"` // 传感器名称
- T_Remark string `xml:"T_Remark"` // 采集内容
- T_Ut time.Time `xml:"T_Ut"` // 采集时间
- T_ToAdmin []int `xml:"T_ToAdmin"` // 发送给谁 Admin.Id
- T_State int `xml:"T_State"` // 0 删除 1 不处理 2 已处理 3 未处理
- }
- // SendWarning 发送报警(level 等级 label 标签 msg 内容 args 参数)
- func SendWarning(tSn string, tId int, tDevName, tSensorName, msg string) {
- T_Warning_r := T_Warning{
- T_tp: 1012,
- T_sn: tSn,
- T_D_name: "",
- T_id: tId,
- T_DS_name: "",
- T_Remark: msg,
- T_Ut: time.Now(),
- T_State: 3,
- }
- AddWarning(T_Warning_r)
- fmt.Println(tSn, tDevName, msg)
- }
- func AddWarning(r T_Warning) bool {
- b, err := msgpack.Marshal(&r)
- if err != nil {
- fmt.Println(err)
- }
- // 请求-响应, 向 test3 发布一个 `help me` 请求数据,设置超时间3秒,如果有多个响应,只接收第一个收到的消息
- msg, err := Nats.Request("AddWarning", b, 3*time.Second)
- if err != nil {
- fmt.Println(err)
- } else {
- fmt.Printf("AddWarning : %s\n", string(msg.Data))
- return true
- }
- return false
- }
|