chao 10a577c310
feat: Supports launching multiple monolithic instances, load-balanced by nginx, requiring only MongoDB and Redis at a minimum (#3759)
* fix: performance issues with Kafka caused by encapsulating the MQ interface

* fix: admin token in standalone mode

* fix: full id version

* fix: resolve deadlock in cache eviction and improve GetBatch implementation

* refactor: replace LongConn with ClientConn interface and simplify message handling

* refactor: replace LongConn with ClientConn interface and simplify message handling

* fix: seq use $setOnInsert for min_seq in conversation update

* feat: add error code for handled friend requests and improve error handling in friend operations

* refactor(msg): update regex pattern for conversationID to include a trailing colon

* refactor: streamline cache initialization and enhance queue engine configuration

* refactor: streamline cache initialization and enhance queue engine configuration

* feat: add RegisterIP to API config and implement Redis server registration

* feat(redis): implement standalone gateway registration with Redis

* chore: update openimsdk/tools dependency to v0.0.50-alpha.121

* fix: change timer to ticker for improved periodic execution

* refactor: replace Kafka topic configuration with mqbuild constants for improved readability

* feat(redis): implement Redis-based locking mechanism for cron tasks
2026-07-03 10:28:06 +00:00

42 lines
957 B
Go

package config
import (
"strings"
"github.com/openimsdk/tools/errs"
)
const (
QueueEngineKafka = "kafka"
QueueEngineRedis = "redis"
QueueEngineMemory = "memory"
)
func NormalizeQueueEngine(engine string) string {
switch strings.ToLower(strings.TrimSpace(engine)) {
case "", "kafka":
return QueueEngineKafka
case "redis":
return QueueEngineRedis
case "memory":
return QueueEngineMemory
default:
return strings.ToLower(strings.TrimSpace(engine))
}
}
func ValidateQueueEngine(engine string, standalone bool) (string, error) {
normalized := NormalizeQueueEngine(engine)
switch normalized {
case QueueEngineKafka, QueueEngineRedis:
return normalized, nil
case QueueEngineMemory:
if standalone {
return normalized, nil
}
return "", errs.ErrArgs.WrapMsg("unsupported queue engine for microservice deployment", "engine", engine)
default:
return "", errs.ErrArgs.WrapMsg("unsupported queue engine", "engine", engine)
}
}