| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- package subconfigs
-
- import (
- "fmt"
-
- "git.x2erp.com/qdy/go-base/config/core"
- )
-
- // RabbitMQConfig RabbitMQ配置
- type RabbitMQConfig struct {
- core.BaseConfig
- Host string `yaml:"host" desc:"RabbitMQ服务器主机地址"`
- Port int `yaml:"port" desc:"RabbitMQ服务器端口"`
- Username string `yaml:"username" desc:"RabbitMQ用户名"`
- Password string `yaml:"password" desc:"RabbitMQ密码"`
- Vhost string `yaml:"vhost" desc:"RabbitMQ虚拟主机"`
- UseTLS bool `yaml:"use_tls" desc:"是否使用TLS加密连接"`
- CACert string `yaml:"ca_cert" desc:"CA证书文件路径"`
- CertFile string `yaml:"cert_file" desc:"客户端证书文件路径"`
- KeyFile string `yaml:"key_file" desc:"客户端私钥文件路径"`
- MaxOpenChannels int `yaml:"max_open_channels" desc:"最大打开的通道数"`
- ReconnectDelay int `yaml:"reconnect_delay" desc:"重连延迟时间(毫秒)"`
- MaxReconnectAttempts int `yaml:"max_reconnect_attempts" desc:"最大重连尝试次数"`
- Heartbeat int `yaml:"heartbeat" desc:"心跳间隔时间(秒)"`
- ChannelSize int `yaml:"channel_size" desc:"通道缓冲区大小"`
- DefaultExchange string `yaml:"default_exchange" desc:"默认交换机名称"`
- DefaultQueue string `yaml:"default_queue" desc:"默认队列名称"`
- AutoAck bool `yaml:"auto_ack" desc:"是否自动确认消息"`
- Mandatory bool `yaml:"mandatory" desc:"是否强制路由"`
- Immediate bool `yaml:"immediate" desc:"是否立即交付"`
- PrefetchCount int `yaml:"prefetch_count" desc:"预取消息数量"`
- PrefetchSize int `yaml:"prefetch_size" desc:"预取消息大小"`
- Global bool `yaml:"global" desc:"是否为全局预取设置"`
- PublisherConfirms bool `yaml:"publisher_confirms" desc:"是否启用发布者确认"`
- ConfirmTimeout int `yaml:"confirm_timeout" desc:"确认超时时间(秒)"`
- }
-
- func (c *RabbitMQConfig) Description() string {
- return "RabbitMQ消息队列配置"
- }
-
- func NewRabbitMQConfig() *RabbitMQConfig {
- return &RabbitMQConfig{}
- }
-
- func (c *RabbitMQConfig) SetDefaults() {
- c.Port = 5672
- c.Username = "guest"
- c.Password = "guest"
- c.Vhost = "/"
- c.MaxOpenChannels = 10
- c.ReconnectDelay = 5000
- c.MaxReconnectAttempts = 10
- c.Heartbeat = 30
- c.ChannelSize = 100
- c.DefaultExchange = "amq.direct"
- c.PrefetchCount = 1
- c.ConfirmTimeout = 30
- }
-
- func (c *RabbitMQConfig) Load(data map[string]interface{}) error {
- return c.LoadFromYAML(data, c)
- }
-
- func (c *RabbitMQConfig) Validate() error {
- if c.Host == "" {
- return fmt.Errorf("rabbitmq host is required")
- }
- if c.Port <= 0 {
- return fmt.Errorf("invalid rabbitmq port: %d", c.Port)
- }
- return nil
- }
-
- func (c *RabbitMQConfig) IsConfigured() bool {
- return c.Host != ""
- }
-
- // 自动注册
- func init() {
- core.Register("rabbitmq", &RabbitMQConfig{})
- }
|