Documentation
¶
Overview ¶
Package config 提供应用程序的配置结构定义 本文件定义了基础配置结构,包含系统、服务、日志、数据库、缓存、消息队列等各个组件的配置信息
Package config 提供应用程序的配置结构定义 本文件定义了Elasticsearch搜索引擎的配置结构
Package config 提供应用程序的配置结构定义 本文件定义了Etcd分布式键值存储的配置结构
Package config 提供应用程序的配置结构定义 本文件定义了日志系统的配置结构,支持多级别日志配置和日志轮转策略
Package config 提供应用程序的配置结构定义 ¶
Package config 提供应用程序的配置结构定义 本文件定义了MySQL数据库的配置结构,包含连接参数、连接池配置和数据库迁移策略
Package config 提供应用程序的配置结构定义 本文件定义了MySQL数据库解析器的配置结构,支持读写分离和分库分表
Package config 提供应用程序的配置结构定义 本文件定义了限流相关的配置结构
Package config 提供应用程序的配置结构定义 本文件定义了Redis缓存数据库的配置结构,支持单实例和集群模式
Package config 提供应用程序的配置结构定义 本文件定义了定时任务的配置结构,支持cron表达式和函数执行
Package config 提供应用程序的配置结构定义 本文件定义了HTTP服务的配置结构,包含网络、会话、中间件和性能相关配置
Package config 提供应用程序的配置结构定义 本文件定义了SMTP邮件服务的配置结构,用于发送邮件通知
Package config 提供应用程序的配置结构定义 本文件定义了系统级别的配置结构,用于控制各个功能组件是否启用
Package config 提供应用程序的配置结构定义 本文件定义了链路追踪相关的配置结构,支持 OpenTelemetry 标准的分布式追踪
Index ¶
- type BaseConfig
- type CORSConfig
- type ConsumeConfig
- type DbInfo
- type DbResolver
- type DbResolvers
- type DeadLetterConfig
- type EsInfo
- type EtcdInfo
- type LoggerConfig
- type LoggersConfig
- type MessageQueue
- func (m *MessageQueue) Close()
- func (m *MessageQueue) Consume() error
- func (m *MessageQueue) ConsumeWithContext(ctx context.Context) error
- func (m *MessageQueue) GetFuncInfo() string
- func (m *MessageQueue) GetInfo() string
- func (m *MessageQueue) InitChannelForProducer() error
- func (m *MessageQueue) Publish(message string) error
- func (m *MessageQueue) PublishBatch(messages []string) error
- func (m *MessageQueue) PublishBatchWithContext(ctx context.Context, messages []string) error
- func (m *MessageQueue) PublishWithContext(ctx context.Context, message string) error
- type MetricsConfig
- type PublishConfirmConfig
- type RabbitMQInfo
- type RabbitMqListInfo
- type RateLimitConfig
- type RateLimitRule
- type RedisInfo
- type ScheduleInfo
- type ServiceInfo
- type SmtpInfo
- type SystemInfo
- type TracingConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BaseConfig ¶
type BaseConfig struct {
System SystemInfo `yaml:"system"` // 系统基础配置,控制各组件是否启用
Service ServiceInfo `yaml:"service"` // 服务配置,包含端口、超时时间等
Log LoggersConfig `yaml:"log"` // 日志配置,包含文件路径、轮转策略等
Metrics MetricsConfig `yaml:"metrics"` // Prometheus 指标监控配置
Tracing *TracingConfig `yaml:"tracing"` // OpenTelemetry 链路追踪配置
RateLimit RateLimitConfig `yaml:"rateLimit"` // 限流配置,用于控制API请求速率
CORS CORSConfig `yaml:"cors"` // CORS 跨域配置
Db *DbInfo `yaml:"db"` // 单数据库配置,指向单个数据库实例
Etcd *EtcdInfo `yaml:"etcd"` // Etcd配置,用于服务发现和配置管理
DbList []DbInfo `yaml:"dbList"` // 多数据库列表配置,支持分库分表
DbResolvers DbResolvers `yaml:"dbResolvers"` // 数据库解析器配置,支持读写分离
Redis *RedisInfo `yaml:"redis"` // 单Redis配置,指向单个Redis实例
RedisList []RedisInfo `yaml:"redisList"` // 多Redis列表配置,支持多实例部署
RabbitMQ RabbitMQInfo `yaml:"rabbitMQ"` // RabbitMQ配置,用于消息队列
RabbitMQList RabbitMqListInfo `yaml:"rabbitMQList"` // RabbitMQ列表配置,支持多实例部署
Es *EsInfo `yaml:"es"` // Elasticsearch配置,用于搜索引擎
Smtp SmtpInfo `yaml:"smtp"` // SMTP配置,用于邮件发送
}
BaseConfig 应用程序基础配置结构 该结构体包含了应用程序运行所需的所有配置信息,支持YAML格式的配置文件
type CORSConfig ¶
type CORSConfig struct {
// Enabled 是否启用 CORS 中间件
Enabled bool `yaml:"enabled"`
// AllowOrigins 允许的来源列表
// 支持精确匹配和通配符匹配:
// - "*" 表示允许所有来源(不建议在生产环境使用)
// - "http://localhost:3000" 精确匹配
// - "*.example.com" 通配符匹配(匹配所有 example.com 的子域名)
AllowOrigins []string `yaml:"allowOrigins"`
// AllowMethods 允许的 HTTP 方法列表
// 默认值:GET, POST, PUT, PATCH, DELETE, OPTIONS
AllowMethods []string `yaml:"allowMethods"`
// AllowHeaders 允许的请求头列表
// 默认值:Content-Type, Authorization, X-Trace-Id, X-Request-Id
AllowHeaders []string `yaml:"allowHeaders"`
// ExposeHeaders 暴露给浏览器的响应头列表
// 允许浏览器 JavaScript 访问这些响应头
ExposeHeaders []string `yaml:"exposeHeaders"`
// AllowCredentials 是否允许携带凭证(Cookie、HTTP 认证等)
// 注意:当设置为 true 时,AllowOrigins 不能为 "*"
AllowCredentials bool `yaml:"allowCredentials"`
// MaxAge 预检请求结果的缓存时间(秒)
// 默认值:86400(24小时)
MaxAge int `yaml:"maxAge"`
}
CORSConfig 跨域资源共享配置 用于配置 CORS 中间件的行为
func (*CORSConfig) GetAllowHeaders ¶
func (c *CORSConfig) GetAllowHeaders() []string
GetAllowHeaders 获取允许的请求头列表。 未配置时默认返回 Content-Type, Authorization, X-Trace-Id, X-Request-Id。
func (*CORSConfig) GetAllowMethods ¶
func (c *CORSConfig) GetAllowMethods() []string
GetAllowMethods 获取允许的 HTTP 方法列表。 未配置时默认返回 GET, POST, PUT, PATCH, DELETE, OPTIONS。
func (*CORSConfig) GetAllowOrigins ¶
func (c *CORSConfig) GetAllowOrigins() []string
GetAllowOrigins 获取允许的来源列表。 未配置时默认返回 ["*"](允许所有来源)。
func (*CORSConfig) GetMaxAge ¶
func (c *CORSConfig) GetMaxAge() int
GetMaxAge 获取预检请求缓存时间(秒)。 未配置或配置为非正数时默认返回 86400(24 小时)。
type ConsumeConfig ¶
type ConsumeConfig struct {
// PrefetchCount 预取数量,控制消费者一次从队列获取的消息数量
PrefetchCount int
// MaxRetry 最大重试次数,超过后消息将被发送到死信队列
MaxRetry int
// RetryDelay 重试延迟时间
RetryDelay time.Duration
}
ConsumeConfig 消费者配置
type DbInfo ¶
type DbInfo struct {
AliasName string `yaml:"aliasName"` // 数据库别名,用于多数据库环境下的标识
Host string `yaml:"host"` // 数据库服务器地址,支持IP地址或域名
Port int `yaml:"port"` // 数据库服务器端口,MySQL默认端口为3306
DBName string `yaml:"dbName"` // 数据库名称,指定要连接的数据库
Username string `yaml:"username"` // 数据库访问用户名,用于身份认证
Password string `yaml:"password"` // 数据库访问密码,用于身份认证
Charset string `yaml:"charset"` // 数据库字符集,用于确保数据编码正确
Loc string `yaml:"loc"` // 数据库时区设置,影响时间字段的处理
MaxIdleConns int `yaml:"maxIdleConns"` // 空闲中的最大连接数,用于设置连接池中允许保持空闲状态的最大连接数。当连接池中的空闲连接数量超过这个值时,多余的空闲连接会被关闭。
MaxOpenConns int `yaml:"maxOpenConns"` // 打开到数据库的最大连接数,用于设置连接池中允许同时打开的最大连接数。当打开的连接数量达到这个值时,新的连接请求会被阻塞,直到有连接被释放
ConnMaxIdleTime int `yaml:"connMaxIdleTime"` // 最大空闲时间,单位:秒,用于设置连接在连接池中保持空闲状态的最大时间。当一个空闲连接的存活时间超过这个值时,该连接会被关闭并从连接池中移除
ConnMaxLifetime int `yaml:"connMaxLifetime"` // 最大连接存活时间,单位:秒,用于设置连接在连接池中可以存活的最大时间。当一个连接的存活时间超过这个值时,无论该连接是否处于空闲状态,都会被关闭并从连接池中移除
Migrate string `yaml:"migrate"` // 每次启动时更新数据库表的方式,update:增量更新表,create:删除所有表再重新建表,其他则不执行任何动作
LogLevel *int `yaml:"logLevel"` // 日志级别(1-关闭所有日志,2-仅输出错误日志,3-输出错误日志和慢查询,4-输出错误日志和慢查询日志和所有sql)
SlowThreshold *int `yaml:"slowThreshold"` // 慢查询阈值(单位:毫秒),超过此时间的SQL查询会被记录为慢查询
IgnoreRecordNotFoundError *bool `yaml:"ignoreRecordNotFoundError"` // 忽略记录未找到错误,当查询结果为空时是否记录错误日志
Tables []string `yaml:"tables"` // 走该库查询的数据表,用于分库分表场景下的表路由
TablePrefix string `yaml:"tablePrefix"` // 表名前缀,所有表名都会自动添加此前缀
SingularTable *bool `yaml:"singularTable"` // 是否使用单数表名,true时User表为user,false时User表为users
}
DbInfo MySQL数据库配置信息 该结构体包含了连接MySQL数据库所需的所有配置参数,支持连接池和迁移策略配置
type DbResolver ¶
type DbResolver struct {
Sources []DbInfo `yaml:"sources"` // 主库配置列表,用于写操作(INSERT、UPDATE、DELETE)
Replicas []DbInfo `yaml:"replicas"` // 从库配置列表,用于读操作(SELECT)
Tables []any `yaml:"tables"` // 该解析器适用的表名列表,支持字符串或结构体类型
}
DbResolver 数据库解析器配置 该结构体定义了读写分离的配置,支持主从数据库配置和表级别路由
func (*DbResolver) IsValid ¶
func (dbResolver *DbResolver) IsValid() bool
IsValid 验证数据库解析器配置是否有效 该方法检查是否至少配置了一个主库,确保解析器可以正常工作 返回:
- bool: 配置是否有效
func (*DbResolver) ReplicaConfigs ¶
func (dbResolver *DbResolver) ReplicaConfigs() []gorm.Dialector
ReplicaConfigs 获取从库配置列表 该方法将从库配置转换为GORM的数据库驱动配置,用于建立读操作连接 返回:
- []gorm.Dialector: 从库数据库驱动配置列表
func (*DbResolver) SourceConfigs ¶
func (dbResolver *DbResolver) SourceConfigs() []gorm.Dialector
SourceConfigs 获取主库配置列表 该方法将主库配置转换为GORM的数据库驱动配置,用于建立写操作连接 返回:
- []gorm.Dialector: 主库数据库驱动配置列表
type DbResolvers ¶
type DbResolvers []DbResolver
DbResolvers 数据库解析器配置列表 该类型定义了多个数据库解析器的集合,支持复杂的数据库路由策略
func (DbResolvers) DefaultConfig ¶
func (dbResolvers DbResolvers) DefaultConfig() DbInfo
DefaultConfig 获取默认数据库配置 该方法返回第一个解析器的第一个主库配置,作为默认的数据库连接配置 返回:
- DbInfo: 默认数据库配置信息
func (DbResolvers) IsValid ¶
func (dbResolvers DbResolvers) IsValid() bool
IsValid 验证所有数据库解析器配置是否有效 该方法遍历所有解析器配置,确保每个解析器都配置正确 返回:
- bool: 所有配置是否都有效
type DeadLetterConfig ¶
type DeadLetterConfig struct {
// Enabled 是否启用死信队列
Enabled bool
// Exchange 死信交换机名称,为空时自动生成(原交换机名称 + ".dlx")
Exchange string
// RoutingKey 死信路由键,为空时使用原路由键
RoutingKey string
// QueueName 死信队列名称,为空时自动生成(原队列名称 + ".dlq")
QueueName string
// MessageTTL 消息在死信队列中的存活时间(毫秒),0表示永不过期
MessageTTL int64
}
DeadLetterConfig 死信队列配置 用于配置消息消费失败后的处理策略
type EsInfo ¶
type EsInfo struct {
Addresses []string `yaml:"addresses"` // Elasticsearch集群节点地址列表,支持多节点配置
Username string `yaml:"username"` // Elasticsearch访问用户名,用于身份认证
Password string `yaml:"password"` // Elasticsearch访问密码,用于身份认证
}
EsInfo Elasticsearch配置信息 该结构体包含了连接Elasticsearch集群所需的基本配置参数
type EtcdInfo ¶
type EtcdInfo struct {
Addresses []string `yaml:"addresses"` // Etcd集群节点地址列表,支持多节点配置
Username string `yaml:"username"` // Etcd访问用户名,用于身份认证
Password string `yaml:"password"` // Etcd访问密码,用于身份认证
Timeout *int `yaml:"timeout"` // 连接超时时间(秒),指针类型支持配置文件中不设置该字段
}
EtcdInfo Etcd配置信息 该结构体包含了连接Etcd集群所需的基本配置参数
type LoggerConfig ¶
type LoggerConfig struct {
Level string `yaml:"level"` // 日志级别(trace、debug、info、warn、error、fatal、panic)
FileName string `yaml:"fileName"` // 日志文件名,不包含路径和扩展名
FilePath string `yaml:"filePath"` // 日志文件存储路径,覆盖全局配置
MaxAge int `yaml:"maxAge"` // 日志文件最大保存时间(天),覆盖全局配置
RotationTime int `yaml:"rotationTime"` // 日志轮转时间间隔(分钟),覆盖全局配置
RotationSize int `yaml:"rotationSize"` // 日志轮转大小限制(KB),覆盖全局配置
}
LoggerConfig 单个日志级别配置 该结构体定义了特定日志级别的配置参数,可以覆盖全局配置
type LoggersConfig ¶
type LoggersConfig struct {
FilePath string `yaml:"filePath"` // 日志文件存储路径,所有日志文件的根目录
MaxAge int `yaml:"maxAge"` // 日志文件最大保存时间(天),超过时间的日志文件会被自动删除
RotationTime int `yaml:"rotationTime"` // 日志轮转时间间隔(分钟),定期创建新的日志文件
RotationSize int `yaml:"rotationSize"` // 日志轮转大小限制(KB),当日志文件达到指定大小时进行轮转
Loggers []LoggerConfig `yaml:"loggers"` // 日志级别配置列表,支持为不同级别配置不同的输出策略
PrintCaller bool `yaml:"printCaller"` // 是否在日志中打印调用者信息(文件名和行号)
}
LoggersConfig 日志系统全局配置 该结构体包含了日志系统的基础配置,如文件路径、轮转策略等
func (LoggersConfig) ToDbLoggerConfig ¶
func (loggersConfig LoggersConfig) ToDbLoggerConfig() LoggersConfig
ToDbLoggerConfig 转换为数据库日志配置 该方法会为数据库相关的日志配置添加"DB"后缀,用于区分不同类型的日志 返回:
- LoggersConfig: 修改后的日志配置,包含数据库日志的特定设置
type MessageQueue ¶
type MessageQueue struct {
MQName string // RabbitMQ 实例别名
QueueName string // 队列名称
ExchangeName string // 交换机名称
// ExchangeType 交换机类型:direct(根据路由精准匹配), fanout(广播, queue 和 routing 都设空),
// topic(路由模糊匹配), headers(根据 header 匹配)
ExchangeType string
RoutingKey string // 路由键
MqConnStr string // AMQP 连接字符串
Conn *amqp.Connection
Channel *amqp.Channel
// Fun 消费函数(旧版兼容,建议使用 FunWithCtx)
Fun func(string) error
// FunWithCtx 带 context 的消费函数,支持优雅关闭
FunWithCtx func(ctx context.Context, msg string) error
// DeadLetter 死信队列配置
DeadLetter DeadLetterConfig
// PublishConfirm Publisher Confirms 配置
PublishConfirm PublishConfirmConfig
// ConsumeConfig 消费者配置
ConsumeConfig ConsumeConfig
// contains filtered or unexported fields
}
MessageQueue RabbitMQ 消息队列实例,封装了连接管理、通道初始化、消息发布与消费的完整能力。 支持死信队列、Publisher Confirms、消费重试、批量发布等高级特性。
func (*MessageQueue) Consume ¶
func (m *MessageQueue) Consume() error
Consume 启动消费者(无 context 版本,保持向后兼容)
func (*MessageQueue) ConsumeWithContext ¶
func (m *MessageQueue) ConsumeWithContext(ctx context.Context) error
ConsumeWithContext 启动消费者(带 context 版本,支持优雅关闭) 当 context 被取消时,消费者会优雅地停止处理新消息
func (*MessageQueue) GetFuncInfo ¶
func (m *MessageQueue) GetFuncInfo() string
GetFuncInfo 通过反射获取消费函数(Fun)的完整函数名,用于日志输出
func (*MessageQueue) GetInfo ¶
func (m *MessageQueue) GetInfo() string
GetInfo 返回队列的唯一标识字符串,格式为 "MQName_QueueName_ExchangeName_ExchangeType_RoutingKey"
func (*MessageQueue) InitChannelForProducer ¶
func (m *MessageQueue) InitChannelForProducer() error
InitChannelForProducer 初始化发送者通道 该方法专门为消息发送者设计,只初始化连接、通道和交换机 不进行队列声明和绑定,这些操作由消费者负责 返回值:
- error: 初始化失败时返回错误信息
func (*MessageQueue) PublishBatch ¶
func (m *MessageQueue) PublishBatch(messages []string) error
PublishBatch 批量发布消息 参数:
- messages: 要发布的消息列表
返回:
- error: 发布失败时返回错误,包含失败的消息索引
func (*MessageQueue) PublishBatchWithContext ¶
func (m *MessageQueue) PublishBatchWithContext(ctx context.Context, messages []string) error
PublishBatchWithContext 批量发布消息(带 context) 参数:
- ctx: context
- messages: 要发布的消息列表
返回:
- error: 发布失败时返回错误
func (*MessageQueue) PublishWithContext ¶
func (m *MessageQueue) PublishWithContext(ctx context.Context, message string) error
PublishWithContext 发布单条消息(带 context)
type MetricsConfig ¶
type MetricsConfig struct {
Enabled bool `yaml:"enabled"` // 是否启用指标监控
Path string `yaml:"path"` // 指标端点路径,默认 /metrics
ExcludePaths []string `yaml:"excludePaths"` // 不统计的路径列表
}
MetricsConfig Prometheus 指标监控配置
type PublishConfirmConfig ¶
type PublishConfirmConfig struct {
// Enabled 是否启用发布确认
Enabled bool
// Timeout 确认超时时间
Timeout time.Duration
}
PublishConfirmConfig Publisher Confirms 配置 用于确保消息成功投递到 RabbitMQ
type RabbitMQInfo ¶
type RabbitMQInfo struct {
AliasName string `yaml:"aliasName"` // 代表当前实例的名字
Host string `yaml:"host"` // 主机地址
Port int `yaml:"port"` // 端口号
Username string `yaml:"username"` // 用户名
Password string `yaml:"password"` // 密码
LogMessageContent bool `yaml:"logMessageContent"` // 是否在日志中输出消息内容,默认 false(不输出),生产环境建议关闭以避免敏感信息泄露
}
RabbitMQInfo RabbitMQ 连接配置信息,对应 YAML 配置文件中的 rabbitmq 列表项
func (*RabbitMQInfo) Url ¶
func (rabbitMQInfo *RabbitMQInfo) Url() string
Url 拼接 AMQP 连接字符串(格式:amqp://user:pass@host:port/)
type RabbitMqListInfo ¶
type RabbitMqListInfo []RabbitMQInfo
RabbitMqListInfo RabbitMQ 连接配置列表,支持多实例场景
func (*RabbitMqListInfo) Url ¶
func (rabbitMqListInfo *RabbitMqListInfo) Url(aliasName string) string
Url 根据别名查找 RabbitMQ 实例并返回连接字符串,未找到时返回空字符串
type RateLimitConfig ¶
type RateLimitConfig struct {
// Enabled 是否启用限流
Enabled bool `yaml:"enabled"`
// DefaultRate 默认每秒请求数
DefaultRate int `yaml:"defaultRate"`
// DefaultBurst 默认突发容量(令牌桶大小)
DefaultBurst int `yaml:"defaultBurst"`
// Store 存储类型: memory(单机)/ redis(分布式)
Store string `yaml:"store"`
// Rules 自定义限流规则列表
Rules []RateLimitRule `yaml:"rules"`
// Message 默认限流提示消息
Message string `yaml:"message"`
// CleanupInterval 内存限流器清理过期条目的间隔(秒),默认 60
CleanupInterval int `yaml:"cleanupInterval"`
}
RateLimitConfig 限流配置 用于控制 API 请求速率,防止服务过载
func (*RateLimitConfig) GetCleanupInterval ¶
func (c *RateLimitConfig) GetCleanupInterval() int
GetCleanupInterval 获取清理间隔(秒)
func (*RateLimitConfig) GetDefaultBurst ¶
func (c *RateLimitConfig) GetDefaultBurst() int
GetDefaultBurst 获取默认突发容量,如果未配置则返回速率的 2 倍
func (*RateLimitConfig) GetDefaultRate ¶
func (c *RateLimitConfig) GetDefaultRate() int
GetDefaultRate 获取默认速率,如果未配置则返回 100
func (*RateLimitConfig) GetMessage ¶
func (c *RateLimitConfig) GetMessage() string
GetMessage 获取默认限流消息
func (*RateLimitConfig) GetStore ¶
func (c *RateLimitConfig) GetStore() string
GetStore 获取存储类型,默认为 memory
type RateLimitRule ¶
type RateLimitRule struct {
// Path 路径匹配,支持通配符(如 /api/*)
Path string `yaml:"path"`
// Method HTTP 方法,空表示所有方法
Method string `yaml:"method"`
// Rate 每秒请求数
Rate int `yaml:"rate"`
// Burst 突发容量
Burst int `yaml:"burst"`
// KeyType 限流维度: ip / user / global
// - ip: 按客户端 IP 限流
// - user: 按用户 ID 限流(需要认证)
// - global: 全局限流(所有请求共享配额)
KeyType string `yaml:"keyType"`
// Message 自定义限流提示消息
Message string `yaml:"message"`
}
RateLimitRule 限流规则 定义特定路径或接口的限流策略
func (*RateLimitRule) GetBurst ¶
func (r *RateLimitRule) GetBurst() int
GetBurst 获取规则突发容量,如果未配置则返回速率的 2 倍
func (*RateLimitRule) GetKeyType ¶
func (r *RateLimitRule) GetKeyType() string
GetKeyType 获取限流维度,默认为 ip
func (*RateLimitRule) GetRate ¶
func (r *RateLimitRule) GetRate() int
GetRate 获取规则速率,如果未配置则返回 0(使用默认值)
type RedisInfo ¶
type RedisInfo struct {
AliasName string `yaml:"aliasName"` // 代表当前实例的名字,用于多Redis实例环境下的标识
Addr string `yaml:"addr"` // 服务器地址:端口,单实例模式下的Redis服务器地址
ClusterAddrs []string `yaml:"clusterAddrs"` // 集群模式下的节点地址列表,支持多节点Redis Cluster
UseCluster bool `yaml:"useCluster"` // 是否使用集群模式,true为集群模式,false为单实例模式
DB int `yaml:"db"` // 单实例模式下redis的哪个数据库,Redis支持0-15共16个数据库
Password string `yaml:"password"` // 密码,用于Redis身份认证,支持空密码
// 连接池配置
PoolSize int `yaml:"poolSize"` // 连接池大小,默认10
MinIdleConns int `yaml:"minIdleConns"` // 最小空闲连接数,默认5
}
RedisInfo Redis配置信息 该结构体包含了连接Redis数据库所需的基本配置参数,支持单实例和集群两种部署模式
type ScheduleInfo ¶
type ScheduleInfo struct {
Name string `yaml:"name"` // 定时任务名称
Cron string `yaml:"cron"` // cron表达式,定义定时任务的执行时间规则
Cmd func() `yaml:"cmd"` // 定时任务执行的函数,无参数无返回值的函数类型
ShouldRunImmediately bool `yaml:"should_run_immediately"` // 是否在服务启动后立即执行
}
ScheduleInfo 定时任务配置信息 该结构体定义了定时任务的执行策略和要执行的函数
func (*ScheduleInfo) GetFuncInfo ¶
func (s *ScheduleInfo) GetFuncInfo() string
GetFuncInfo 获取定时任务函数的详细信息 该方法通过反射获取传入函数的名称,用于日志记录和调试 返回:
- string: 函数名称,如果获取失败则返回空字符串
type ServiceInfo ¶
type ServiceInfo struct {
Ip string `yaml:"ip"` // 服务绑定的IP地址,支持0.0.0.0表示监听所有网络接口
Port int `yaml:"port"` // 服务监听的端口号,用于客户端连接
RoutePrefix string `yaml:"routePrefix"` // 路由前缀,所有API路由都会自动添加此前缀
SessionExpire int `yaml:"sessionExpire"` // 缓存的有效时长(秒),控制会话数据的过期时间
SessionPrefix string `yaml:"sessionPrefix"` // redis中缓存前缀,用于区分不同类型的会话数据
Middlewares []string `yaml:"middlewares"` // 中间件列表,顺序对应中间件调用顺序,影响请求处理流程
ApiTimeout int `yaml:"apiTimeout"` // API超时时间(秒),超过此时间的请求会被自动终止
ReadTimeout int `yaml:"readTimeout"` // 读取超时时间(秒),控制HTTP请求体的读取超时
WriteTimeout int `yaml:"writeTimeout"` // 写入超时时间(秒),控制HTTP响应体的写入超时
PprofPort *int `yaml:"pprofPort"` // pprof服务端口,用于性能分析和调试,指针类型支持配置文件中不设置该字段
ShutdownTimeout int `yaml:"shutdownTimeout"` // 优雅关闭超时时间(秒),默认 5 秒
}
ServiceInfo HTTP服务配置信息 该结构体包含了HTTP服务器运行所需的所有配置参数,支持中间件配置和性能调优
func (*ServiceInfo) GetShutdownTimeout ¶
func (s *ServiceInfo) GetShutdownTimeout() int
GetShutdownTimeout 获取优雅关闭超时时间(秒) 如果未配置或配置为 0,则返回默认值 5 秒
type SmtpInfo ¶
type SmtpInfo struct {
Host string `yaml:"host"` // SMTP服务器地址
Username string `yaml:"username"` // SMTP服务器用户名,通常是邮箱地址
Password string `yaml:"password"` // SMTP服务器密码,可能是邮箱密码或应用专用密码
Sender string `yaml:"sender"` // 发件人邮箱地址,用于标识邮件的来源
}
SmtpInfo SMTP邮件服务配置信息 该结构体包含了连接SMTP服务器和发送邮件所需的基本配置参数
type SystemInfo ¶
type SystemInfo struct {
GcTime int `yaml:"gcTime"` // GC时间,预留配置项,暂时没用上,用于未来垃圾回收调优
UseRedis bool `yaml:"useRedis"` // 是否启用Redis缓存服务,控制Redis相关功能的可用性
UseMysql bool `yaml:"useMysql"` // 是否启用MySQL数据库服务,控制数据库相关功能的可用性
UseEs bool `yaml:"useEs"` // 是否启用Elasticsearch搜索引擎,控制搜索相关功能的可用性
UseEtcd bool `yaml:"useEtcd"` // 是否启用Etcd分布式键值存储,控制服务发现和配置管理功能
UseRabbitMQ bool `yaml:"useRabbitMQ"` // 是否启用RabbitMQ消息队列,控制异步消息处理功能
UseSchedule bool `yaml:"useSchedule"` // 是否启用定时任务功能,控制定时任务调度器的可用性
}
SystemInfo 系统级别配置信息 该结构体包含了控制应用程序各个功能组件是否启用的开关配置
type TracingConfig ¶
type TracingConfig struct {
// Enabled 是否启用链路追踪
// 设置为 true 时启用完整的分布式追踪功能
Enabled bool `mapstructure:"enabled" yaml:"enabled"`
// ServiceName 服务名称
// 用于在追踪系统中标识当前服务,建议使用有意义的名称如 "user-service"
ServiceName string `mapstructure:"serviceName" yaml:"serviceName"`
// ExporterType 导出器类型
// 支持的类型:
// - "otlp": OpenTelemetry Protocol,推荐使用,支持 gRPC 传输
// - "jaeger": Jaeger 原生协议
// - "stdout": 标准输出,仅用于调试
ExporterType string `mapstructure:"exporterType" yaml:"exporterType"`
// Endpoint 采集器端点地址
// 根据 ExporterType 不同,格式也不同:
// - otlp: "localhost:4317" (gRPC) 或 "localhost:4318" (HTTP)
// - jaeger: "http://localhost:14268/api/traces"
Endpoint string `mapstructure:"endpoint" yaml:"endpoint"`
// SampleRate 采样率
// 范围 0.0 到 1.0,表示采样的比例
// - 1.0: 采样所有请求(开发环境推荐)
// - 0.1: 采样 10% 的请求(生产环境推荐)
// - 0.0: 不采样任何请求
SampleRate float64 `mapstructure:"sampleRate" yaml:"sampleRate"`
// Insecure 是否禁用 TLS
// 设置为 true 时使用不安全连接,仅建议在开发环境使用
Insecure bool `mapstructure:"insecure" yaml:"insecure"`
// PropagatorType 上下文传播器类型
// 支持的类型:
// - "tracecontext": W3C Trace Context 标准(默认,推荐)
// - "b3": Zipkin B3 格式
// - "jaeger": Jaeger 原生格式
PropagatorType string `mapstructure:"propagatorType" yaml:"propagatorType"`
// EnableDBTracing 是否启用数据库追踪
// 设置为 true 时会追踪所有数据库操作(查询、插入、更新、删除)
EnableDBTracing bool `mapstructure:"enableDBTracing" yaml:"enableDBTracing"`
// EnableRedisTracing 是否启用 Redis 追踪
// 设置为 true 时会追踪所有 Redis 操作
EnableRedisTracing bool `mapstructure:"enableRedisTracing" yaml:"enableRedisTracing"`
// EnableHTTPClientTracing 是否启用 HTTP 客户端追踪
// 设置为 true 时会追踪所有出站 HTTP 请求
EnableHTTPClientTracing bool `mapstructure:"enableHTTPClientTracing" yaml:"enableHTTPClientTracing"`
}
TracingConfig 链路追踪配置结构 支持集成 OpenTelemetry,可导出到 Jaeger、OTLP、Zipkin 等后端