order-service/src/cmd/server/main.go
Piotr Biernat 896321e945
All checks were successful
continuous-integration/drone/push Build is passing
Refactor. Consul TTl fix, gracefull shutdown
2022-12-02 20:12:08 +01:00

81 lines
2.3 KiB
Go

package main
import (
"log"
"os"
"strconv"
"git.pbiernat.dev/egommerce/go-api-pkg/fluentd"
amqp "git.pbiernat.dev/egommerce/go-api-pkg/rabbitmq"
"git.pbiernat.dev/egommerce/order-service/internal/app/config"
"git.pbiernat.dev/egommerce/order-service/internal/app/database"
"git.pbiernat.dev/egommerce/order-service/internal/app/server"
)
const (
defAppName = "order-svc"
defAppDomain = "order-svc"
defNetAddr = ":80"
defLoggerAddr = "api-logger:24224"
defRegistryAddr = "api-registry:8500"
defDbURL = "postgres://postgres:12345678@postgres-db:5432/egommerce"
defMongoDbURL = "mongodb://mongodb:12345678@mongo-db:27017"
defEventBusURL = "amqp://guest:guest@api-eventbus:5672"
ebEventsExchange = "api-events"
ebEventsQueue = "order-svc"
)
func main() {
if config.ErrLoadingEnvs != nil {
log.Panicln("Error loading .env file", config.ErrLoadingEnvs)
}
c := new(server.Config)
c.AppID, _ = os.Hostname()
c.AppName = config.GetEnv("APP_NAME", defAppName)
c.AppDomain = config.GetEnv("APP_DOMAIN", defAppDomain)
c.NetAddr = config.GetEnv("SERVER_ADDR", defNetAddr)
c.Port, _ = strconv.Atoi(c.NetAddr[1:])
c.LoggerAddr = config.GetEnv("LOGGER_ADDR", defLoggerAddr)
c.RegistryAddr = config.GetEnv("REGISTRY_ADDR", defRegistryAddr)
c.DbURL = config.GetEnv("DATABASE_URL", defDbURL)
c.EventBusURL = config.GetEnv("EVENTBUS_URL", defEventBusURL)
c.EventBusExchange = ebEventsExchange
logHost, logPort := fluentd.ParseAddr(c.LoggerAddr)
logger := fluentd.NewLogger(c.GetAppFullName(), logHost, logPort)
defer logger.Close()
// db conn
dbConn, err := database.Connect(c.DbURL)
if err != nil { // fixme: add wait-for-db...
logger.Log("Failed to connect to Database server: %v\n", err)
os.Exit(1)
}
defer dbConn.Close()
// eventbus conn
ebConn, ebCh, err := amqp.Open(c.EventBusURL)
if err != nil {
logger.Log("Failed to connect to EventBus server: %v\n", err)
os.Exit(1)
}
defer ebCh.Close()
defer amqp.Close(ebConn)
err = amqp.NewExchange(ebCh, c.EventBusExchange)
if err != nil {
logger.Log("Failed to declare EventBus exchange: %v\n", err)
os.Exit(1)
}
// start server
srv := server.NewServer(c, logger, dbConn, ebCh)
forever := make(chan struct{})
srv.StartWithGracefulShutdown(forever)
<-forever
// os.Exit(1)
}