[feat]添加规则引擎debug功能

This commit is contained in:
PandaX
2023-10-27 16:13:17 +08:00
parent 0fcb262519
commit 28e0bcbe1c
34 changed files with 298 additions and 255 deletions

View File

@@ -3,6 +3,7 @@ package message
import (
"encoding/json"
"github.com/google/uuid"
"github.com/sirupsen/logrus"
"time"
)
@@ -26,30 +27,59 @@ const (
MONITOR = "MONITOR" //监控
)
const (
DEBUGIN = "In"
DEBUGOUT = "Out"
)
type Msg map[string]interface{}
type Metadata map[string]interface{}
type Message struct {
Id string //uuid 消息Id
Ts time.Time //时间戳
MsgType string //消息类型, attributes参数telemetry遥测Connect连接事件
User string //客户 设备发布人 设备所有者
Msg Msg //数据 数据结构JSON 设备原始数据 msg
Metadata Metadata //消息的元数据 包括设备Id设备类型产品ID等
Id string //uuid 消息Id
Ts time.Time //时间戳
MsgType string //消息类型, attributes参数telemetry遥测Connect连接事件
User string //客户 设备发布人 设备所有者
Msg Msg //数据 数据结构JSON 设备原始数据 msg
Metadata Metadata //消息的元数据 包括设备Id设备类型产品ID等
DeBugChan chan DebugData
EndDeBugChan chan struct{}
}
// NewMessage ...
func NewMessage(user, messageType string, msg Msg, metadata Metadata) *Message {
return &Message{
Id: uuid.New().String(),
Ts: time.Now(),
User: user,
MsgType: messageType,
Msg: msg,
Metadata: metadata,
Id: uuid.New().String(),
Ts: time.Now(),
User: user,
MsgType: messageType,
Msg: msg,
Metadata: metadata,
DeBugChan: make(chan DebugData, 100),
EndDeBugChan: make(chan struct{}),
}
}
func (t *Message) Debug(nodeId, nodeName, debugType, error string) {
if debugType == DEBUGIN {
logrus.Infof("%s handle message '%s'", nodeName, t.MsgType)
}
debug := DebugData{
Ts: time.Now().Format("2006-01-02 15:04:05.000"),
NodeId: nodeId,
MsgId: t.Id,
DebugType: debugType,
MsgType: t.MsgType,
Msg: t.Msg,
Metadata: t.Metadata,
Error: error,
}
if deviceName, ok := t.Metadata.GetValue("deviceName").(string); ok {
debug.DeviceName = deviceName
}
t.DeBugChan <- debug
}
func (t *Message) GetAllMap() map[string]interface{} {
data := make(map[string]interface{})
for msgKey, msgValue := range t.Msg {