main.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package main
  2. import (
  3. "fmt"
  4. "github.com/nats-io/nats.go"
  5. "go.mongodb.org/mongo-driver/bson"
  6. cu "jygit.jydev.jianyu360.cn/data_capture/myself_util/commonutil"
  7. iu "jygit.jydev.jianyu360.cn/data_capture/myself_util/initutil"
  8. "log"
  9. "net/http"
  10. "time"
  11. )
  12. var (
  13. Config map[string]interface{}
  14. Webport string
  15. Api string
  16. To string
  17. )
  18. func init() {
  19. iu.ReadConfig(&Config)
  20. InitFileInfo() //初始化附件解析信息
  21. InitOss() //oss
  22. InitNats() //nats
  23. Webport = cu.ObjToString(Config["webport"])
  24. Api = cu.ObjToString(Config["api"])
  25. To = cu.ObjToString(Config["to"])
  26. }
  27. func main() {
  28. go http.ListenAndServe(":"+Webport, nil)
  29. SubscribeNats()
  30. ch := make(chan bool, 1)
  31. <-ch
  32. }
  33. // SubscribeNats nats订阅
  34. func SubscribeNats() {
  35. //先消费,带压缩
  36. Jnats.SubZip(Subscribe+"."+Step, func(msg *nats.Msg) {
  37. NatsThreads <- true
  38. go func(msg *nats.Msg) {
  39. defer func() {
  40. <-NatsThreads
  41. }()
  42. data := &MsgInfo{}
  43. err := bson.Unmarshal(msg.Data, &data)
  44. if err != nil {
  45. log.Println("解析数据失败:", err)
  46. data.Err = err.Error()
  47. //SaveData()//保存异常数据
  48. } else {
  49. //处理数据
  50. data.Stime = time.Now().Unix()
  51. data.CurrSetp = Step
  52. DealFile(data.Data)
  53. data.Etime = time.Now().Unix()
  54. }
  55. //消息回写
  56. bs, _ := bson.Marshal(data)
  57. err = msg.Respond(bs)
  58. if err != nil {
  59. fmt.Println("回执失败:", data.Id, data.Data["_id"])
  60. //SaveData()//保存异常数据
  61. }
  62. }(msg)
  63. })
  64. }
  65. /*func SendMail(bodyTextAll string) {
  66. res, err := http.Get(fmt.Sprintf("%s?to=%s&title=%s&body=%s", Api, To, "ocr_file_over", bodyTextAll))
  67. if err == nil {
  68. defer res.Body.Close()
  69. read, err := ioutil.ReadAll(res.Body)
  70. fmt.Println("邮件发送成功:", string(read), err)
  71. } else {
  72. fmt.Println("邮件发送失败:", err)
  73. }
  74. }
  75. */