github.com/nyan233/littlerpc@v0.4.6-0.20230316182519-0c8d5c48abaf/core/client/config.go (about) 1 package client 2 3 import ( 4 "crypto/tls" 5 "github.com/nyan233/littlerpc/core/client/loadbalance" 6 "github.com/nyan233/littlerpc/core/common/logger" 7 "github.com/nyan233/littlerpc/core/common/msgparser" 8 "github.com/nyan233/littlerpc/core/common/msgwriter" 9 "github.com/nyan233/littlerpc/core/middle/codec" 10 "github.com/nyan233/littlerpc/core/middle/packer" 11 "github.com/nyan233/littlerpc/core/middle/plugin" 12 perror "github.com/nyan233/littlerpc/core/protocol/error" 13 "github.com/nyan233/littlerpc/internal/pool" 14 "time" 15 ) 16 17 type Config struct { 18 // Tls相关的配置 19 TlsConfig *tls.Config 20 // 服务器的地址 21 // 当配置了地址解析器和负载均衡器的时候,此项将被忽略 22 ServerAddr string 23 // 使用的日志器 24 Logger logger.LLogger 25 // 连接池中的连接是否使用KeepAlive 26 KeepAlive bool 27 // 发送ping消息的间隔 28 KeepAliveTimeout time.Duration 29 // 底层使用的Goroutine池的大小 30 PoolSize int32 31 // 客户端使用的传输协议 32 NetWork string 33 // 字节流编码器 34 Packer packer.Packer 35 // 结构化数据编码器 36 Codec codec.Codec 37 // 用于连接复用的连接数量 38 MuxConnection int 39 // 是否开启负载均衡 40 OpenLoadBalance bool 41 // 负载均衡规则, 默认可选hash/roundRobin/random/consistentHash 42 BalancerScheme string 43 // 地址解析器, 默认提供http/file/live 44 BalancerResolverFunc loadbalance.ResolverFunc 45 // 负载均衡器的附加配置, 实现第三方的负载均衡器时可能需要此配置 46 BalancerTailConfig interface{} 47 // 负载均衡器的地址列表更新间隔, 默认120s 48 ResolverUpdateInterval time.Duration 49 BalancerFactory func(config loadbalance.Config) loadbalance.Balancer 50 // 安装的插件 51 Plugins []plugin.ClientPlugin 52 // 可以生成自定义错误的工厂回调函数 53 ErrHandler perror.LErrors 54 // 自定义Goroutine Pool的建造器, 在客户端不推荐使用 55 // 在不需要使用异步回调模式时可以关闭 56 ExecPoolBuilder pool.TaskPoolBuilder[string] 57 Writer msgwriter.Writer 58 ParserFactory msgparser.Factory 59 // 是否启用调试模式 60 Debug bool 61 // 是否注册MessageParser-OnRead接口 62 RegisterMPOnRead bool 63 }