73 lines
2.1 KiB
Go
73 lines
2.1 KiB
Go
// 通用示例处理器
|
|
package common
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
)
|
|
|
|
// ExampleHandler 示例外部处理器
|
|
type ExampleHandler struct {
|
|
name string
|
|
}
|
|
|
|
// NewExampleHandler 创建示例处理器
|
|
func NewExampleHandler(name string) *ExampleHandler {
|
|
return &ExampleHandler{
|
|
name: name,
|
|
}
|
|
}
|
|
|
|
// WillWarm 热数据预热处理
|
|
func (h *ExampleHandler) WillWarm(ctx context.Context, group string, data []byte) ([]byte, error) {
|
|
log.Printf("🔥 [%s] 预热处理, 组=%s, 数据大小=%d bytes", h.name, group, len(data))
|
|
|
|
// 示例:可以在这里进行数据预处理、验证、转换等
|
|
// 这里简单返回原数据
|
|
return data, nil
|
|
}
|
|
|
|
// WillCold 温数据冷却处理
|
|
func (h *ExampleHandler) WillCold(ctx context.Context, group string, data []byte) ([]byte, error) {
|
|
log.Printf("❄️ [%s] 冷却处理, 组=%s, 数据大小=%d bytes", h.name, group, len(data))
|
|
|
|
// 示例:可以在这里进行数据压缩、归档、清理等
|
|
// 这里简单返回原数据
|
|
return data, nil
|
|
}
|
|
|
|
// OnComplete 组完成回调
|
|
func (h *ExampleHandler) OnComplete(ctx context.Context, group string) error {
|
|
log.Printf("🎉 [%s] 组完成回调, 组=%s - 所有数据已处理完成", h.name, group)
|
|
|
|
// 示例:可以在这里进行组级别的清理、通知、统计等
|
|
return nil
|
|
}
|
|
|
|
// LoggingHandler 简单的日志处理器(用于不需要复杂处理的示例)
|
|
type LoggingHandler struct{}
|
|
|
|
// NewLoggingHandler 创建日志处理器
|
|
func NewLoggingHandler() *LoggingHandler {
|
|
return &LoggingHandler{}
|
|
}
|
|
|
|
// WillWarm 热数据预热处理
|
|
func (h *LoggingHandler) WillWarm(ctx context.Context, group string, data []byte) ([]byte, error) {
|
|
fmt.Printf("🔥 数据预热: 组[%s] %d bytes\n", group, len(data))
|
|
return data, nil
|
|
}
|
|
|
|
// WillCold 温数据冷却处理
|
|
func (h *LoggingHandler) WillCold(ctx context.Context, group string, data []byte) ([]byte, error) {
|
|
fmt.Printf("❄️ 数据冷却: 组[%s] %d bytes\n", group, len(data))
|
|
return data, nil
|
|
}
|
|
|
|
// OnComplete 组完成回调
|
|
func (h *LoggingHandler) OnComplete(ctx context.Context, group string) error {
|
|
fmt.Printf("✅ 组完成: [%s]\n", group)
|
|
return nil
|
|
}
|