framework_v2/internal/cmd/rpc.go

71 lines
1.7 KiB
Go
Raw Normal View History

2024-06-13 01:16:48 +00:00
package cmd
import (
2024-06-15 16:55:25 +00:00
"framework_v2/internal/app/config"
"framework_v2/internal/app/ent"
"framework_v2/internal/app/jobs"
"framework_v2/internal/app/jwks"
"framework_v2/internal/app/logger"
"framework_v2/internal/app/redis"
grpc2 "framework_v2/internal/middleware/grpc"
2024-06-13 01:16:48 +00:00
"github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/auth"
"github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/logging"
"github.com/spf13/cobra"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
"net"
)
var rpcCommand = &cobra.Command{
Use: "serve",
Run: func(cmd *cobra.Command, args []string) {
2024-06-15 16:55:25 +00:00
config.InitConfig()
logger.InitLogger()
ent.InitEnt()
redis.InitRedis()
jwks.InitJwksRefresh()
jobs.InitAsynQClient()
2024-06-13 01:16:48 +00:00
StartSpiderService()
},
}
func StartSpiderService() {
2024-06-16 06:07:26 +00:00
if config.Config.ListenAddr.GRPC == "" {
config.Config.ListenAddr.GRPC = "0.0.0.0:8081"
2024-06-13 01:16:48 +00:00
}
2024-06-16 06:07:26 +00:00
lis, err := net.Listen("tcp", config.Config.ListenAddr.GRPC)
2024-06-13 01:16:48 +00:00
if err != nil {
panic("failed to listen: " + err.Error())
}
2024-06-16 06:07:26 +00:00
logger.Logger.Info("Server listening at " + config.Config.ListenAddr.GRPC)
2024-06-13 01:16:48 +00:00
var opts = []grpc.ServerOption{
grpc.ChainUnaryInterceptor(
2024-06-15 16:55:25 +00:00
logging.UnaryServerInterceptor(grpc2.ZapLogInterceptor()),
auth.UnaryServerInterceptor(grpc2.JwtAuth),
2024-06-13 01:16:48 +00:00
),
grpc.ChainStreamInterceptor(
2024-06-15 16:55:25 +00:00
logging.StreamServerInterceptor(grpc2.ZapLogInterceptor()),
auth.StreamServerInterceptor(grpc2.JwtAuth),
2024-06-13 01:16:48 +00:00
),
}
grpcServer := grpc.NewServer(opts...)
reflection.Register(grpcServer)
// 如需实现,需要手动实现这里
//library.RegisterLibraryServiceServer(grpcServer, &services.LibraryService{})
//document.RegisterDocumentServiceServer(grpcServer, &services.DocumentService{})
err = grpcServer.Serve(lis)
if err != nil {
panic(err)
return
}
}