package main import ( lib "com.navi.medici.janus/lib" config "com.navi.medici.janus/config" server "com.navi.medici.janus/server" producer_module "com.navi.medici.janus/producer" "fmt" "log" "strings" "github.com/spf13/viper" ) var ( port string ) func init() { viper.SetConfigName("config") viper.AddConfigPath("./config") viper.SetConfigType("yml") viper.AutomaticEnv() var configuration config.Configurations if err := viper.ReadInConfig(); err != nil { fmt.Printf("Error reading config file, %s", err) } err := viper.Unmarshal(&configuration) if err != nil { fmt.Printf("Unable to decode into struct, %v", err) } configuration.Kafka.Bootstrap_Servers = viper.GetString(configuration.Kafka.Bootstrap_Servers) configuration.Kafka.Sasl_User = viper.GetString(configuration.Kafka.Sasl_User) configuration.Kafka.Sasl_Password = viper.GetString(configuration.Kafka.Sasl_Password) configuration.SchemaRegistry.Endpoint = viper.GetString(configuration.SchemaRegistry.Endpoint) configuration.SchemaRegistry.Topics = viper.GetString(configuration.SchemaRegistry.Topics) configuration.Server.Kafka_Topic = viper.GetString(configuration.Server.Kafka_Topic) port = configuration.Server.Port log.Printf("PORT IS: ", port) log.Printf(configuration.Kafka.Bootstrap_Servers) log.Printf(configuration.Kafka.Sasl_User) log.Printf(configuration.Kafka.Sasl_Password) log.Printf(configuration.SchemaRegistry.Endpoint) producer_module.GetSchemaVersions(configuration.SchemaRegistry.Endpoint, strings.Split(configuration.SchemaRegistry.Topics, ",")) producer_module.InitializeProducers(configuration.Kafka) // TO DO: read number of goroutines from config for i := 0; i < configuration.Server.Goroutines; i++ { go lib.ProcessRequestChannel(configuration.Server.Kafka_Topic) } // sync producer using sarama // sync_producer := producer_module.GetSyncProducer(configuration.Kafka) // log.Println(sync_producer) // producer_module.KafkaWriter(sync_producer, topic, messageToSendBytes) // sync_producer.Close() // async producer using sarama // async_producer := producer_module.GetAsyncProducer(configuration.Kafka) // log.Println(async_producer) // producer_module.KafkaWriter(async_producer) // async_producer.Close() } func main() { log.Printf("Serving on http://0.0.0.0:", port) httpServer, err := server.NewServer(port) if err != nil { log.Fatalln("Unable to start server, ", err) } httpServer.HttpServer.Serve(httpServer.Listener) }