util.go 886 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // util
  2. package util
  3. import (
  4. "encoding/json"
  5. "time"
  6. "github.com/nats-io/nats.go"
  7. )
  8. type MsgInfo struct {
  9. Id string //消息唯一id
  10. CurrSetp string //当前步骤
  11. Data map[string]interface{} //数据内容
  12. Stime int64
  13. Etime int64
  14. }
  15. func SendRequest(nc *nats.Conn, subject, step string, requestData *MsgInfo, timeout time.Duration) (*MsgInfo, error) {
  16. requestData.CurrSetp = step
  17. stime := time.Now().UnixMilli()
  18. // 发送请求并等待响应
  19. bs, err := json.Marshal(requestData)
  20. if err != nil {
  21. return nil, err
  22. }
  23. rep, err := nc.Request(subject+"."+step, bs, timeout)
  24. if err != nil {
  25. return nil, err
  26. }
  27. // 返回响应数据
  28. msgInfo := &MsgInfo{}
  29. msgInfo.Etime = time.Now().UnixMilli()
  30. msgInfo.Stime = stime
  31. err = json.Unmarshal(rep.Data, msgInfo)
  32. if err != nil {
  33. return nil, err
  34. }
  35. return msgInfo, nil
  36. }