l_ai_knowledge/internal/stream/factory.go

37 lines
646 B
Go

package stream
import (
"os"
"strconv"
"time"
"knowlege-lsxd/internal/types/interfaces"
)
// 流管理器类型
const (
TypeMemory = "memory"
TypeRedis = "redis"
)
// NewStreamManager 创建流管理器
func NewStreamManager() (interfaces.StreamManager, error) {
switch os.Getenv("STREAM_MANAGER_TYPE") {
case TypeRedis:
db, err := strconv.Atoi(os.Getenv("REDIS_DB"))
if err != nil {
db = 0
}
ttl := time.Hour // 默认1小时
return NewRedisStreamManager(
os.Getenv("REDIS_ADDR"),
os.Getenv("REDIS_PASSWORD"),
db,
os.Getenv("REDIS_PREFIX"),
ttl,
)
default:
return NewMemoryStreamManager(), nil
}
}