Files
pipelinedb/examples/common/handler.go
2025-09-30 15:05:56 +08:00

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
}