配置項
更新時間:
使用通道服務功能消費數(shù)據(jù)時,您可以根據(jù)需要配置客戶端tunnel client、數(shù)據(jù)消費worker以及日志。本文介紹通道服務的配置項。
tunnel client
初始化tunnel client時,您可以通過NewTunnelClientWithConfig接口自定義客戶端配置,如果未指定config進行接口初始化或者config為nil,則默認配置會使用DefaultTunnelConfig。
DefaultTunnelConfig的配置信息如下:
var DefaultTunnelConfig = &TunnelConfig{
//最大指數(shù)退避重試時間。
MaxRetryElapsedTime: 75 * time.Second,
//HTTP請求超時時間。
RequestTimeout: 60 * time.Second,
//http.DefaultTransport。
Transport: http.DefaultTransport,
}
數(shù)據(jù)消費worker
TunnelWorkerConfig中包含了數(shù)據(jù)消費worker需要的配置,其中ProcessorFactory為必填項,其余參數(shù)如果不填寫將使用默認值,通常使用默認值即可。
TunnelWorkerConfig的配置信息如下:
type TunnelWorkerConfig struct {
//worker同Tunnel服務的心跳超時時間,通常使用默認值即可。
HeartbeatTimeout time.Duration
//worker發(fā)送心跳的頻率,通常使用默認值即可。
HeartbeatInterval time.Duration
//tunnel下消費連接建立接口,通常使用默認值即可。
ChannelDialer ChannelDialer
//消費連接上具體處理器產(chǎn)生接口,通常使用callback函數(shù)初始化SimpleProcessFactory即可。
ProcessorFactory ChannelProcessorFactory
//zap日志配置,默認值為DefaultLogConfig。
LogConfig *zap.Config
//zap日志輪轉(zhuǎn)配置,默認值為DefaultSyncer。
LogWriteSyncer zapcore.WriteSyncer
}
其中ProcessorFactory為用戶注冊消費callback函數(shù)以及其他信息的接口,建議使用SDK中自帶SimpleProcessorFactory實現(xiàn)。
SimpleProcessorFactory的配置信息如下:
type SimpleProcessFactory struct {
//用戶自定義信息,會傳遞到ProcessFunc和ShutdownFunc中的ChannelContext參數(shù)中。
CustomValue interface{}
//Worker記錄checkpoint的間隔,CpInterval<=0時會使用DefaultCheckpointInterval。
CpInterval time.Duration
//worker數(shù)據(jù)處理的同步調(diào)用callback,ProcessFunc返回error時worker會用本批數(shù)據(jù)退避重試ProcessFunc。
ProcessFunc func(channelCtx *ChannelContext, records []*Record) error
//worker退出時的同步調(diào)用callback。
ShutdownFunc func(channelCtx *ChannelContext)
//日志配置,Logger為nil時會使用DefaultLogConfig初始化logger。
Logger *zap.Logger
}
日志
默認日志配置和日志輪轉(zhuǎn)配置示例如下:
默認日志配置
//DefaultLogConfig是TunnelWorkerConfig和SimpleProcessFactory使用的默認日志配置。
var DefaultLogConfig = zap.Config{
Level: zap.NewAtomicLevelAt(zap.InfoLevel),
Development: false,
Sampling: &zap.SamplingConfig{
Initial: 100,
Thereafter: 100,
},
Encoding: "json",
EncoderConfig: zapcore.EncoderConfig{
TimeKey: "ts",
LevelKey: "level",
NameKey: "logger",
CallerKey: "caller",
MessageKey: "msg",
StacktraceKey: "stacktrace",
LineEnding: zapcore.DefaultLineEnding,
EncodeLevel: zapcore.LowercaseLevelEncoder,
EncodeTime: zapcore.ISO8601TimeEncoder,
EncodeDuration: zapcore.SecondsDurationEncoder,
EncodeCaller: zapcore.ShortCallerEncoder,
},
}
日志輪轉(zhuǎn)配置
//DefaultSyncer是TunnelWorkerConfig和SimpleProcessFactory使用的默認日志輪轉(zhuǎn)配置
var DefaultSyncer = zapcore.AddSync(&lumberjack.Logger{
//日志文件路徑。
Filename: "tunnelClient.log",
//最大日志文件大小。
MaxSize: 512, //MB
//壓縮輪轉(zhuǎn)的日志文件數(shù)。
MaxBackups: 5,
//輪轉(zhuǎn)日志文件保留的最大天數(shù)。
MaxAge: 30, //days
//是否壓縮輪轉(zhuǎn)日志文件。
Compress: true,
})
文檔內(nèi)容是否對您有幫助?