NatsServer.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package NatsServer
  2. import (
  3. "ColdVerify_local/conf"
  4. "ColdVerify_local/lib"
  5. "ColdVerify_local/logs"
  6. "ColdVerify_local/models/Task"
  7. "errors"
  8. "github.com/nats-io/nats.go"
  9. "github.com/vmihailenco/msgpack/v5"
  10. "time"
  11. )
  12. func Update_Task(v Task.Task) error {
  13. logs.Debug("Nats =>", lib.FuncName(), v)
  14. b, err := msgpack.Marshal(&v)
  15. if err != nil {
  16. panic(err)
  17. }
  18. msg, err := lib.Nats.Request("ColdVerify_Server_Update_Task", b, 3*time.Second)
  19. if err != nil {
  20. return err
  21. }
  22. type T_R struct {
  23. Code int16 `xml:"Code"`
  24. Msg string `xml:"Msg"`
  25. Data Task.Task `xml:"Data"`
  26. }
  27. var t_R T_R
  28. err = msgpack.Unmarshal(msg.Data, &t_R)
  29. if err != nil {
  30. return err
  31. }
  32. if t_R.Code != 200 {
  33. return errors.New(t_R.Msg)
  34. }
  35. return nil
  36. }
  37. func Read_Task(T_task_id string) (task Task.Task, err error) {
  38. logs.Println("Nats =>", lib.FuncName(), T_task_id)
  39. if !lib.Nats.IsConnected() {
  40. lib.Nats, err = nats.Connect("nats://" + conf.NatsServer_Url)
  41. if err != nil {
  42. logs.Println("无法重新连接到 NATS:", err)
  43. }
  44. logs.Println("成功重新连接到 NATS...")
  45. }
  46. msg, err := lib.Nats.Request("ColdVerify_Server_Read_Task", []byte(T_task_id), 3*time.Second)
  47. if err != nil {
  48. logs.Error(lib.FuncName(), err.Error())
  49. return task, err
  50. }
  51. type T_R struct {
  52. Code int16 `xml:"Code"`
  53. Msg string `xml:"Msg"`
  54. Data Task.Task `xml:"Data"`
  55. }
  56. var t_R T_R
  57. err = msgpack.Unmarshal(msg.Data, &t_R)
  58. if err != nil {
  59. logs.Error(lib.FuncName(), err.Error())
  60. return task, err
  61. }
  62. if t_R.Code != 200 {
  63. err = errors.New(t_R.Msg)
  64. logs.Error(lib.FuncName(), err.Error())
  65. return task, err
  66. }
  67. return t_R.Data, nil
  68. }