dmysql.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package des
  2. import (
  3. "log"
  4. "time"
  5. "app.yhyue.com/moapp/jybase/mysql"
  6. // esv7 "github.com/olivere/elastic/v7"
  7. )
  8. // 目标保存对象,mysql工具类
  9. type DTidb struct {
  10. Ch chan map[string]any
  11. ChEnd chan bool
  12. ColName string
  13. TiDb *mysql.Mysql
  14. }
  15. func GetDTidb(dbName, addr, user, pwd, colName string) *DTidb {
  16. tidb := &mysql.Mysql{
  17. Address: addr,
  18. UserName: user,
  19. PassWord: pwd,
  20. DBName: dbName,
  21. MaxOpenConns: 20,
  22. MaxIdleConns: 10,
  23. }
  24. tidb.Init()
  25. t := &DTidb{
  26. Ch: make(chan map[string]any, 500),
  27. ChEnd: make(chan bool),
  28. ColName: colName,
  29. TiDb: tidb,
  30. }
  31. return t
  32. }
  33. func (tidb *DTidb) Save() {
  34. L:
  35. for {
  36. select {
  37. case data := <-tidb.Ch:
  38. tidb.TiDb.Insert("customer_data_ttzl", data)
  39. default:
  40. select {
  41. case <-tidb.ChEnd:
  42. break L
  43. case <-time.After(time.Millisecond * 10):
  44. }
  45. }
  46. }
  47. log.Println("tidb,保存完成...")
  48. }
  49. func (tidb *DTidb) Send(data map[string]any) {
  50. tidb.Ch <- data
  51. }
  52. func (tidb *DTidb) End() {
  53. tidb.ChEnd <- true
  54. }