in src/checkout/main.go [140:224]
func main() {
var port string
mustMapEnv(&port, "CHECKOUT_PORT")
tp := initTracerProvider()
defer func() {
if err := tp.Shutdown(context.Background()); err != nil {
log.Printf("Error shutting down tracer provider: %v", err)
}
}()
mp := initMeterProvider()
defer func() {
if err := mp.Shutdown(context.Background()); err != nil {
log.Printf("Error shutting down meter provider: %v", err)
}
}()
err := runtime.Start(runtime.WithMinimumReadMemStatsInterval(time.Second))
if err != nil {
log.Fatal(err)
}
openfeature.SetProvider(flagd.NewProvider())
openfeature.AddHooks(otelhooks.NewTracesHook())
tracer = tp.Tracer("checkout")
svc := new(checkout)
mustMapEnv(&svc.shippingSvcAddr, "SHIPPING_ADDR")
c := mustCreateClient(svc.shippingSvcAddr)
svc.shippingSvcClient = pb.NewShippingServiceClient(c)
defer c.Close()
mustMapEnv(&svc.productCatalogSvcAddr, "PRODUCT_CATALOG_ADDR")
c = mustCreateClient(svc.productCatalogSvcAddr)
svc.productCatalogSvcClient = pb.NewProductCatalogServiceClient(c)
defer c.Close()
mustMapEnv(&svc.cartSvcAddr, "CART_ADDR")
c = mustCreateClient(svc.cartSvcAddr)
svc.cartSvcClient = pb.NewCartServiceClient(c)
defer c.Close()
mustMapEnv(&svc.currencySvcAddr, "CURRENCY_ADDR")
c = mustCreateClient(svc.currencySvcAddr)
svc.currencySvcClient = pb.NewCurrencyServiceClient(c)
defer c.Close()
mustMapEnv(&svc.emailSvcAddr, "EMAIL_ADDR")
c = mustCreateClient(svc.emailSvcAddr)
svc.emailSvcClient = pb.NewEmailServiceClient(c)
defer c.Close()
mustMapEnv(&svc.paymentSvcAddr, "PAYMENT_ADDR")
c = mustCreateClient(svc.paymentSvcAddr)
svc.paymentSvcClient = pb.NewPaymentServiceClient(c)
defer c.Close()
svc.kafkaBrokerSvcAddr = os.Getenv("KAFKA_ADDR")
if svc.kafkaBrokerSvcAddr != "" {
svc.KafkaProducerClient, err = kafka.CreateKafkaProducer([]string{svc.kafkaBrokerSvcAddr}, log)
if err != nil {
log.Fatal(err)
}
}
log.Infof("service config: %+v", svc)
lis, err := net.Listen("tcp", fmt.Sprintf(":%s", port))
if err != nil {
log.Fatal(err)
}
var srv = grpc.NewServer(
grpc.StatsHandler(otelgrpc.NewServerHandler()),
)
pb.RegisterCheckoutServiceServer(srv, svc)
healthpb.RegisterHealthServer(srv, svc)
log.Infof("starting to listen on tcp: %q", lis.Addr().String())
err = srv.Serve(lis)
log.Fatal(err)
}