micro.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package quickstart
  2. import (
  3. _ "embed"
  4. "io/ioutil"
  5. "path/filepath"
  6. "github.com/zeromicro/go-zero/core/logx"
  7. "github.com/zeromicro/go-zero/core/service"
  8. "github.com/zeromicro/go-zero/tools/goctl/util/pathx"
  9. )
  10. const (
  11. rpcEtcContent = `Name: greet.rpc
  12. ListenOn: 127.0.0.1:8080
  13. `
  14. protoName = "greet.proto"
  15. )
  16. var (
  17. //go:embed idl/greet.proto
  18. protocContent string
  19. zRPCWorkDir string
  20. )
  21. type serviceImpl struct {
  22. starter func()
  23. }
  24. func (s serviceImpl) Start() {
  25. s.starter()
  26. }
  27. func (s serviceImpl) Stop() {}
  28. func initRPCProto() error {
  29. zRPCWorkDir = filepath.Join(projectDir, "rpc")
  30. if err := pathx.MkdirIfNotExist(zRPCWorkDir); err != nil {
  31. return err
  32. }
  33. protoFilename := filepath.Join(zRPCWorkDir, protoName)
  34. rpcBytes := []byte(protocContent)
  35. return ioutil.WriteFile(protoFilename, rpcBytes, 0666)
  36. }
  37. type micro struct{}
  38. func newMicroService() micro {
  39. m := micro{}
  40. m.mustStartRPCProject()
  41. return m
  42. }
  43. func (m micro) mustStartRPCProject() {
  44. logx.Must(initRPCProto())
  45. log.Debug(">> Generating quickstart zRPC project...")
  46. arg := "goctl rpc protoc " + protoName + " --go_out=. --go-grpc_out=. --zrpc_out=. --verbose"
  47. execCommand(zRPCWorkDir, arg)
  48. etcFile := filepath.Join(zRPCWorkDir, "etc", "greet.yaml")
  49. logx.Must(ioutil.WriteFile(etcFile, []byte(rpcEtcContent), 0666))
  50. }
  51. func (m micro) start() {
  52. mono := newMonoService(true)
  53. goModTidy(projectDir)
  54. sg := service.NewServiceGroup()
  55. sg.Add(serviceImpl{func() {
  56. log.Debug(">> Ready to start an zRPC server...")
  57. goStart(zRPCWorkDir)
  58. }})
  59. sg.Add(serviceImpl{func() {
  60. mono.start()
  61. }})
  62. sg.Start()
  63. }