
templates.golang.main.go.template Maven / Gradle / Ivy
The newest version!
package main
import (
proto @go_proto_path@
"@code_url@@namespace@/@service_name@/zerotouch/golang/setup"
"@code_url@@namespace@/@service_name@/core/golang/hook"
"flag"
"fmt"
grpcPrometheus "github.com/grpc-ecosystem/go-grpc-prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
"go.uber.org/zap"
"google.golang.org/grpc"
"net"
"net/http"
@temporal_import@
)
func runMonitoring(grpcServer *grpc.Server) {
// register prometheus
grpcPrometheus.Register(grpcServer)
http.Handle("/metrics", promhttp.Handler())
err := http.ListenAndServe(fmt.Sprintf("%s:%d", "0.0.0.0", @prometheus_port@), nil)
if err != nil {
logger.Panic("Unable to start prometheus handler", zap.Error(err))
}
}
@temporal_setup@
func main() {
port := flag.Int("port", @server_port@, "Port for GRPC server to listen")
flag.Parse()
logger.Info("Starting Farm Service Service!")
lis, err := net.Listen("tcp", fmt.Sprintf("0.0.0.0:%d", *port))
if err != nil {
logger.Fatal("Unable to listen on port", zap.Int("port", *port), zap.Error(err))
}
grpcServer := grpc.NewServer(
grpc.StreamInterceptor(grpcPrometheus.StreamServerInterceptor),
grpc.UnaryInterceptor(grpcPrometheus.UnaryServerInterceptor))
proto.Register@service_name@Server(grpcServer, setup.@service_name@)
logger.Info("Registered server",
zap.Any("grpcServer", grpcServer), zap.Any("listener", lis), zap.Int("port", *port))
// on GRPC services
go runMonitoring(grpcServer)
@temporal_startup@
hook.PreStartUpHook()
// Start server
err = grpcServer.Serve(lis)
if err != nil {
logger.Fatal("Unable to listen on service", zap.Int("port", *port), zap.Error(err))
}
hook.PostStartUpHook()
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy