wormhole-explorer/fly/producer/vaa_redis.go

33 lines
675 B
Go

package producer
import (
"context"
"encoding/json"
"github.com/go-redis/redis/v8"
)
// RedisProducer represents a redis producer.
type RedisProducer struct {
client *redis.Client
channel string
}
// NewRedisProducer returns a PushFunc that pushes NotificationEvent to redis.
func NewRedisProducer(c *redis.Client, channel string) *RedisProducer {
return &RedisProducer{
client: c,
channel: channel,
}
}
// Push pushes a NotificationEvent to redis.
func (p *RedisProducer) Push(ctx context.Context, n *Notification) error {
body, err := json.Marshal(n.Event)
if err != nil {
return err
}
return p.client.Publish(ctx, p.channel, string(body)).Err()
}