openreplay/backend/pkg/redisstream/producer.go
Alexander 45c956c489
Json logs format (#1952)
* feat(backend): try a new approach for logs formatting (http)

* feat(backend): added logger module

* feat(backend): added project/session info to /i endpoint

* feat(backend): found a solution for correct caller information

* feat(backend): finished logs for http handlers

* feat(backend): finished logs for mobile http handlers

* feat(backend): finished ender

* feat(backend): finished assets

* feat(backend): finished heuristics

* feat(backend): finished image-storage

* feat(backend): finished sink

* feat(backend): finished storage

* feat(backend): formatted logs in all services

* feat(backend): finished foss part

* feat(backend): added missed foss part

* feat(backend): fixed panic in memory manager and sink service

* feat(backend): connectors
2024-03-14 12:51:14 +01:00

53 lines
940 B
Go

package redisstream
import (
"github.com/go-redis/redis"
"log"
"openreplay/backend/pkg/env"
)
type Producer struct {
redis *redis.Client
maxLenApprox int64
}
func NewProducer() *Producer {
redClient, err := getRedisClient()
if err != nil {
log.Fatal(err)
}
return &Producer{
redis: redClient,
maxLenApprox: int64(env.Uint64("REDIS_STREAMS_MAX_LEN")),
}
}
func (p *Producer) Produce(topic string, key uint64, value []byte) error {
args := &redis.XAddArgs{
Stream: topic,
Values: map[string]interface{}{
"sessionID": key,
"value": value,
},
}
args.MaxLenApprox = p.maxLenApprox
_, err := p.redis.XAdd(args).Result()
if err != nil {
return err
}
return nil
}
func (p *Producer) ProduceToPartition(topic string, partition, key uint64, value []byte) error {
// not implemented
return nil
}
func (p *Producer) Close(_ int) {
// noop
}
func (p *Producer) Flush(_ int) {
// noop
}