github.com/isyscore/isc-gobase@v1.5.3-0.20231218061332-cbc7451899e9/config/base_properties.go (about)

     1  package config
     2  
     3  var ApiModule string
     4  var BaseCfg BaseConfig
     5  var RedisCfg RedisConfig
     6  var EtcdCfg EtcdConfig
     7  var EmqxCfg EmqxConfig
     8  
     9  // BaseConfig base前缀
    10  type BaseConfig struct {
    11  	Api         BaseApi         `yaml:"api"`
    12  	Application BaseApplication `yaml:"application"`
    13  	Server      BaseServer      `yaml:"server"`
    14  	EndPoint    BaseEndPoint    `yaml:"endpoint"`
    15  	Logger      BaseLogger      `yaml:"logger"`
    16  	Profiles    BaseProfile     `yaml:"profiles"`
    17  }
    18  
    19  type BaseApi struct {
    20  	Prefix string `yaml:"prefix"` // api前缀
    21  }
    22  
    23  type BaseApplication struct {
    24  	Name string `yaml:"name"` // 应用名字
    25  }
    26  
    27  type BaseServer struct {
    28  	Enable    bool          `yaml:"enable"`    // 是否启用
    29  	Port      int           `yaml:"port"`      // 端口号
    30  	Gin       BaseGin       `yaml:"gin"`       // web框架gin的配置
    31  	Exception BaseException `yaml:"exception"` // 异常处理
    32  }
    33  
    34  type BaseGin struct {
    35  	Mode string `yaml:"mode"` // 有三种模式:debug/release/test
    36  }
    37  
    38  type BaseEndPoint struct {
    39  	Health EndPointHealth `yaml:"health"` // 健康检查[端点]
    40  	Config EndPointConfig `yaml:"config"` // 配置管理[端点]
    41  }
    42  
    43  type EndPointHealth struct {
    44  	Enable bool `yaml:"enable"` // 是否启用
    45  }
    46  
    47  type EndPointConfig struct {
    48  	Enable bool `yaml:"enable"` // 是否启用
    49  }
    50  
    51  type BaseException struct {
    52  	Print ExceptionPrint `yaml:"print"` // 异常返回打印
    53  }
    54  
    55  type ExceptionPrint struct {
    56  	Enable  bool  `yaml:"enable"`  // 是否启用
    57  	Exclude []int `yaml:"exclude"` // 排除的httpStatus;默认可不填
    58  }
    59  
    60  type BaseLogger struct {
    61  	Level string // 日志root级别:trace/debug/info/warn/error/fatal/panic,默认:info
    62  	Path  string
    63  	Time  LoggerTime  // 时间配置
    64  	Color LoggerColor // 日志颜色
    65  	Split LoggerSplit // 日志切分
    66  	Dir   string
    67  	Max   struct {
    68  		History int
    69  	}
    70  	Console struct {
    71  		WriteFile bool
    72  	}
    73  }
    74  
    75  type LoggerTime struct {
    76  	Format string `yaml:"format"` // 时间格式,time包中的内容,比如:time.RFC3339
    77  }
    78  
    79  type LoggerColor struct {
    80  	Enable bool `yaml:"enable"` // 是否启用
    81  }
    82  
    83  type LoggerSplit struct {
    84  	Enable bool  `yaml:"enable"` // 日志是否启用切分:true/false,默认false
    85  	Size   int64 `yaml:"size"`   // 日志拆分的单位:MB
    86  }
    87  
    88  type BaseProfile struct {
    89  	Active string `yaml:"active"`
    90  }
    91  
    92  type StorageConnectionConfig struct {
    93  	Host       string `yaml:"host"`
    94  	Port       int    `yaml:"port"`
    95  	User       string `yaml:"user"`
    96  	Password   string `yaml:"password"`
    97  	Parameters string `yaml:"parameters"`
    98  }
    99  
   100  // ---------------------------- base.redis ----------------------------
   101  
   102  // RedisConfig base.redis前缀
   103  type RedisConfig struct {
   104  	Password string
   105  	Username string
   106  
   107  	// 单节点
   108  	Standalone RedisStandaloneConfig
   109  	// 哨兵
   110  	Sentinel RedisSentinelConfig
   111  	// 集群
   112  	Cluster RedisClusterConfig
   113  
   114  	// ----- 命令执行失败配置 -----
   115  	// 命令执行失败时候,最大重试次数,默认3次,-1(不是0)则不重试
   116  	MaxRetries int
   117  	// (单位毫秒) 命令执行失败时候,每次重试的最小回退时间,默认8毫秒,-1则禁止回退
   118  	MinRetryBackoff int
   119  	// (单位毫秒)命令执行失败时候,每次重试的最大回退时间,默认512毫秒,-1则禁止回退
   120  	MaxRetryBackoff int
   121  
   122  	// ----- 超时配置 -----
   123  	// (单位毫秒)超时:创建新链接的拨号超时时间,默认15秒
   124  	DialTimeout int
   125  	// (单位毫秒)超时:读超时,默认3秒,使用-1,使用-1则表示无超时,0的话是表示默认3秒
   126  	ReadTimeout int
   127  	// (单位毫秒)超时:写超时,默认是读超时3秒,使用-1,使用-1则表示无超时,0的话是表示默认3秒
   128  	WriteTimeout int
   129  
   130  	// ----- 连接池相关配置 -----
   131  	// 连接池类型:fifo:true;lifo:false;和lifo相比,fifo开销更高
   132  	PoolFIFO bool
   133  	// 最大连接池大小:默认每个cpu核是10个连接,cpu核数可以根据函数runtime.GOMAXPROCS来配置,默认是runtime.NumCpu
   134  	PoolSize int
   135  	// 最小空闲连接数
   136  	MinIdleConns int
   137  	// (单位毫秒) 连接存活时长,默认不关闭
   138  	MaxConnAge int
   139  	// (单位毫秒)获取链接池中的链接都在忙,则等待对应的时间,默认读超时+1秒
   140  	PoolTimeout int
   141  	// (单位毫秒)空闲链接时间,超时则关闭,注意:该时间要小于服务端的超时时间,否则会出现拿到的链接失效问题,默认5分钟,-1表示禁用超时检查
   142  	IdleTimeout int
   143  	// (单位毫秒)空闲链接核查频率,默认1分钟。-1禁止空闲链接核查,即使配置了IdleTime也不行
   144  	IdleCheckFrequency int
   145  }
   146  
   147  // RedisStandaloneConfig base.redis.standalone
   148  type RedisStandaloneConfig struct {
   149  	Addr     string
   150  	Database int
   151  	// 网络类型,tcp或者unix,默认tcp
   152  	Network  string `match:"value={tcp, unix}"  errMsg:"network值不合法,只可为两个值:tcp和unix"`
   153  	ReadOnly bool
   154  }
   155  
   156  // RedisSentinelConfig base.redis.sentinel
   157  type RedisSentinelConfig struct {
   158  	// 哨兵的集群名字
   159  	Master string
   160  	// 哨兵节点地址
   161  	Addrs []string
   162  	// 数据库节点
   163  	Database int
   164  	// 哨兵用户
   165  	SentinelUser string
   166  	// 哨兵密码
   167  	SentinelPassword string
   168  	// 将所有命令路由到从属只读节点。
   169  	SlaveOnly bool
   170  }
   171  
   172  type RedisClusterConfig struct {
   173  	// 节点地址
   174  	Addrs []string
   175  	// 最大重定向次数
   176  	MaxRedirects int
   177  	// 开启从节点的只读功能
   178  	ReadOnly bool
   179  	// 允许将只读命令路由到最近的主节点或从节点,它会自动启用 ReadOnly
   180  	RouteByLatency bool
   181  	// 允许将只读命令路由到随机的主节点或从节点,它会自动启用 ReadOnly
   182  	RouteRandomly bool
   183  }
   184  
   185  type LoggerConfig struct {
   186  	Level string `yaml:"level"`
   187  	Path  string `yaml:"level"`
   188  	Time  struct {
   189  		Format string `yaml:"format"`
   190  	} `yaml:"time"`
   191  	Color struct {
   192  		Enable bool `yaml:"enable"`
   193  	} `yaml:"color"`
   194  	Split struct {
   195  		Enable bool  `yaml:"enable"`
   196  		Size   int64 `yaml:"size"`
   197  	} `yaml:"split"`
   198  	Dir string `yaml:"dir"`
   199  	Max struct {
   200  		History int `yaml:"history"`
   201  	} `yaml:"max"`
   202  	Console struct {
   203  		WriteFile bool `yaml:"writeFile"`
   204  	} `yaml:"console"`
   205  }
   206  
   207  // ---------------------------- base.datasource ----------------------------
   208  type DatasourceConfig struct {
   209  	Username   string
   210  	Password   string
   211  	Host       string
   212  	Port       int
   213  	DriverName string
   214  	DbName     string
   215  	SqlitePath string
   216  }
   217  
   218  type EtcdConfig struct {
   219  	// etcd的服务ip:port列表
   220  	Endpoints []string
   221  
   222  	Username string
   223  	Password string
   224  
   225  	// 自动同步间隔:是用其最新成员更新端点的间隔;默认为0,即禁用自动同步;配置示例:1s、1000ms
   226  	AutoSyncInterval string
   227  
   228  	// 拨号超时:是指连接失败后的超时时间;配置示例:1s、1000ms
   229  	DialTimeout string
   230  
   231  	// 拨号保持连接时间:是客户端ping服务器以查看传输是否连接的时间;配置示例:1s、1000ms
   232  	DialKeepAliveTime string
   233  
   234  	// 拨号保持连接超时:是客户端等待响应保持连接探测的时间,如果在此时间内没有收到响应,则连接将被关闭;配置示例:1s、1000ms
   235  	DialKeepAliveTimeout string
   236  
   237  	// 拨号重试策略: 默认为空:表示默认不重试;1、2、3...表示重试多少次;always:表示一直重试
   238  	DialRetry string
   239  
   240  	// 最大呼叫:发送MSG大小是客户端请求发送的字节限制
   241  	MaxCallSendMsgSize int
   242  
   243  	// 最大调用recv MSG大小是客户端响应接收限制
   244  	MaxCallRecvMsgSize int
   245  
   246  	// 当设置拒绝旧集群时,将拒绝在过时的集群上创建客户端
   247  	RejectOldCluster bool
   248  
   249  	// 设置允许无流时将允许客户端发送keepalive ping到服务器没有任何活动流rp cs
   250  	PermitWithoutStream bool
   251  }
   252  
   253  type EmqxServer struct {
   254  	User        *EmqxServerUser // username and password information
   255  	Host        string    // host or host:port
   256  }
   257  
   258  type EmqxServerUser struct {
   259  	Username    string
   260  	Password    string
   261  }
   262  
   263  type EmqxConfig struct {
   264  	Servers         []string
   265  	ClientId        string
   266  	Username        string
   267  	Password        string
   268  	CleanSession    bool
   269  	Order           bool
   270  	WillEnabled     bool
   271  	WillTopic       string
   272  	WillQos         byte
   273  	WillRetained    bool
   274  	ProtocolVersion uint
   275  	KeepAlive       int64
   276  	PingTimeout             string
   277  	ConnectTimeout          string
   278  	MaxReconnectInterval    string
   279  	AutoReconnect           bool
   280  	ConnectRetryInterval    string
   281  	ConnectRetry            bool
   282  	WriteTimeout            string
   283  	ResumeSubs              bool
   284  	MaxResumePubInFlight    int
   285  	AutoAckDisabled         bool
   286  }