Files
janus/main.go

81 lines
2.4 KiB
Go
Raw Normal View History

2021-03-25 13:24:08 +05:30
package main
import (
"com.navi.medici.janus/config"
"com.navi.medici.janus/lib"
producer_client "com.navi.medici.janus/producer"
"com.navi.medici.janus/server"
"com.navi.medici.janus/utils"
2022-10-01 13:28:15 +05:30
"github.com/spf13/viper"
"go.uber.org/zap"
"log"
2021-03-25 13:24:08 +05:30
)
var (
port string
cors string
logger *zap.Logger
2021-03-25 13:24:08 +05:30
)
2023-01-12 14:44:26 +05:30
const METRICS_PORT = "4000"
2021-03-25 13:24:08 +05:30
func init() {
configs := getConfigs()
utils.InitializeLogger(configs.Env)
logger = utils.GetLogger()
port = configs.Server.Port
logger.Debug("Service started on PORT: " + port)
logger.Debug("Kafka Bootstrap Servers: " + configs.Kafka.Bootstrap_Servers)
producer_client.InitializeProducers(configs.Kafka, configs.Env)
logger.Info("Producer Initialized, starting goroutines for event processing")
for i := 0; i < configs.Server.Goroutines; i++ {
go lib.ProcessJsonRequestChannel(configs.Kafka.Kafka_Topic_Json)
}
}
func getConfigs() config.Configurations {
2021-03-25 13:24:08 +05:30
viper.SetConfigName("config")
viper.AddConfigPath("./config")
viper.SetConfigType("yml")
viper.AutomaticEnv()
var configuration config.Configurations
if err := viper.ReadInConfig(); err != nil {
2021-04-01 12:56:04 +05:30
log.Fatalln("Error reading config file, %s", err)
2021-03-25 13:24:08 +05:30
}
err := viper.Unmarshal(&configuration)
if err != nil {
2021-04-01 12:56:04 +05:30
log.Fatalln("Unable to decode into struct, %v", err)
2021-03-25 13:24:08 +05:30
}
2021-04-01 12:56:04 +05:30
// Following coinfigurations read from environment variables
2022-03-31 16:37:54 +05:30
configuration.Env = viper.GetString(configuration.Env)
2021-03-25 13:24:08 +05:30
configuration.Kafka.Bootstrap_Servers = viper.GetString(configuration.Kafka.Bootstrap_Servers)
2021-04-27 16:40:13 +05:30
configuration.Kafka.Kafka_Topic_Json = viper.GetString(configuration.Kafka.Kafka_Topic_Json)
configuration.Kafka.Kafka_Topic_Protobuf = viper.GetString(configuration.Kafka.Kafka_Topic_Protobuf)
2021-03-25 13:24:08 +05:30
2022-10-01 13:28:15 +05:30
//if configuration.Env == "PROD" {
configuration.Kafka.Sasl_User = viper.GetString(configuration.Kafka.Sasl_User)
configuration.Kafka.Sasl_Password = viper.GetString(configuration.Kafka.Sasl_Password)
//}
cors = viper.GetString(configuration.Server.Cors)
return configuration
2021-03-25 13:24:08 +05:30
}
func main() {
logger.Debug("Serving on http://0.0.0.0:" + port)
2022-10-01 13:28:15 +05:30
httpServer, err1 := server.NewServer(port, cors)
2023-01-12 14:44:26 +05:30
metricsServer, err2 := server.MetricServer(METRICS_PORT)
if err1 != nil {
logger.Fatal("Unable to start server, %v", zap.Error(err1))
}
if err2 != nil {
logger.Fatal("Unable to start Metric server, %v", zap.Error(err2))
2021-03-25 13:24:08 +05:30
}
go httpServer.HttpServer.Serve(httpServer.Listener)
go metricsServer.HttpServer.Serve(metricsServer.Listener)
2021-03-25 13:24:08 +05:30
select {}
2021-03-25 13:24:08 +05:30
}