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 }