main.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package main
  2. import (
  3. "fmt"
  4. "github.com/gogf/gf/v2/frame/g"
  5. "github.com/gogf/gf/v2/net/ghttp"
  6. "jygit.jydev.jianyu360.cn/dataservice/tripartite_gateway/core/node"
  7. "os"
  8. "os/signal"
  9. "syscall"
  10. )
  11. func main() {
  12. //node.NewNode().Register("usermodule", "8888", "http://127.0.0.1")
  13. var serverCode string = "gatewayDemo"
  14. var serverPort int = 8099
  15. server := g.Server()
  16. server.SetPort(serverPort)
  17. server.BindHandler("/gatewayDemo/{page}", func(r *ghttp.Request) {
  18. r.Response.Write(map[string]interface{}{
  19. "code": 1,
  20. "func": r.Get("page"),
  21. "param": map[string]interface{}{
  22. "name": r.Get("name").String(),
  23. "age": r.Get("age").Int64(),
  24. "eId": r.Get("entId").Int64(),
  25. "uId": r.Get("userId").String(),
  26. },
  27. })
  28. })
  29. //向网关注册表注册服务。此步骤应在服务启动后注册。服务有重试机制不受影响。
  30. //NewNode可传入etcd节点,默认http://127.0.0.1:2379
  31. closeNotify, err := node.NewNode().Register(serverCode, fmt.Sprintf("%d", serverPort))
  32. if err != nil {
  33. panic(err)
  34. }
  35. go func() {
  36. server.Run()
  37. }()
  38. //阻塞主进程,接受退出消息。关闭服务,从注册表中删除。
  39. //kill -9 信号接受不到,会有2~3秒延迟。服务有重试机制不受影响。
  40. quit := make(chan os.Signal, 1)
  41. signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
  42. <-quit
  43. closeNotify()
  44. }