123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package config
- import (
- "fmt"
- "log"
- "runtime"
- _ "github.com/go-sql-driver/mysql"
- "github.com/jmoiron/sqlx"
- "github.com/nats-io/nats.go"
- "github.com/spf13/viper"
- )
- type Config struct {
- Port int `json:"port,omitempty"`
- DataBase *DataBase `json:"database,omitempty"`
- MQ *MQ `json:"mq,omitempty"`
- }
- type DataBase struct {
- Name string `json:"name,omitempty"`
- Host string `json:"host,omitempty"`
- MaxOpenConns int `json:"maxOpenConns,omitempty"`
- MaxIdleConns int `json:"maxIdleConns,omitempty"`
- }
- type MQ struct {
- Name string `json:"name,omitempty"`
- Host string `json:"host,omitempty"`
- }
- var Conf *Config
- var DB *sqlx.DB
- var JS nats.JetStreamContext
- func InitConf() {
- if runtime.GOOS == "linux" {
- viper.SetConfigFile("./config-linux.yaml")
- } else {
- viper.SetConfigFile("./config.yaml")
- }
- if err := viper.ReadInConfig(); err != nil {
- panic("Read file error:" + err.Error())
- }
- var config Config
- if err := viper.Unmarshal(&config); err != nil {
- panic("File exchange error:" + err.Error())
- }
- Conf = &config
- }
- func InitDataBase() {
- var err error
- DB, err = sqlx.Connect(Conf.DataBase.Name, Conf.DataBase.Host)
- if err != nil {
- log.Fatalf("connect DB failed, err:%v\n", err)
- return
- }
- DB.SetMaxOpenConns(Conf.DataBase.MaxOpenConns)
- DB.SetMaxIdleConns(Conf.DataBase.MaxOpenConns)
- }
- func InitMQ() {
- conn, err := nats.Connect(Conf.MQ.Host)
- if err != nil {
- fmt.Println(err)
- }
- js, _ := conn.JetStream(nats.PublishAsyncMaxPending(256))
- js.AddStream(&nats.StreamConfig{
- Name: "EXAMS",
- Subjects: []string{"EXAMS.*"},
- })
- JS = js
- }
- func init() {
- // 1、初始化配置
- InitConf()
- // 2、初始化数据库
- InitDataBase()
- // 3、初始化MQ
- InitMQ()
- }
|