|
|
@@ -6,6 +6,7 @@ import ( |
|
|
"time" |
|
|
"time" |
|
|
|
|
|
|
|
|
"github.com/AFASystems/presence/internal/pkg/model" |
|
|
"github.com/AFASystems/presence/internal/pkg/model" |
|
|
|
|
|
"github.com/redis/go-redis/v9" |
|
|
"github.com/segmentio/kafka-go" |
|
|
"github.com/segmentio/kafka-go" |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
@@ -18,6 +19,7 @@ type AppState struct { |
|
|
latestList model.LatestBeaconsList |
|
|
latestList model.LatestBeaconsList |
|
|
kafkaReadersList model.KafkaReadersList |
|
|
kafkaReadersList model.KafkaReadersList |
|
|
kafkaWritersList model.KafkaWritersList |
|
|
kafkaWritersList model.KafkaWritersList |
|
|
|
|
|
valkeyDB *redis.Client |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// NewAppState creates a new application context AppState with default values |
|
|
// NewAppState creates a new application context AppState with default values |
|
|
@@ -53,6 +55,25 @@ func NewAppState() *AppState { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (m *AppState) AddValkeyClient(url string) *redis.Client { |
|
|
|
|
|
valkeyDB := redis.NewClient(&redis.Options{ |
|
|
|
|
|
Addr: url, |
|
|
|
|
|
Password: "", |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
m.valkeyDB = valkeyDB |
|
|
|
|
|
return valkeyDB |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (m *AppState) CleanValkeyClient() { |
|
|
|
|
|
fmt.Println("shutdown of valkey client starts") |
|
|
|
|
|
if err := m.valkeyDB.Close(); err != nil { |
|
|
|
|
|
fmt.Println("Error in shuting down valkey client") |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
fmt.Println("Succesfully shutting down valkey client") |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
func (m *AppState) AddKafkaWriter(kafkaUrl, topic string) *kafka.Writer { |
|
|
func (m *AppState) AddKafkaWriter(kafkaUrl, topic string) *kafka.Writer { |
|
|
kafkaWriter := &kafka.Writer{ |
|
|
kafkaWriter := &kafka.Writer{ |
|
|
Addr: kafka.TCP(kafkaUrl), |
|
|
Addr: kafka.TCP(kafkaUrl), |
|
|
@@ -72,14 +93,14 @@ func (m *AppState) AddKafkaWriter(kafkaUrl, topic string) *kafka.Writer { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func (m *AppState) CleanKafkaWriters() { |
|
|
func (m *AppState) CleanKafkaWriters() { |
|
|
fmt.Println("clean of kafka readers starts") |
|
|
|
|
|
|
|
|
fmt.Println("shutdown of kafka readers starts") |
|
|
for _, r := range m.kafkaWritersList.KafkaWriters { |
|
|
for _, r := range m.kafkaWritersList.KafkaWriters { |
|
|
if err := r.Close(); err != nil { |
|
|
if err := r.Close(); err != nil { |
|
|
fmt.Printf("Error in closing kafka writer %v", err) |
|
|
fmt.Printf("Error in closing kafka writer %v", err) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
fmt.Println("Kafka writers graceful cleanup complete") |
|
|
|
|
|
|
|
|
fmt.Println("Kafka writers graceful shutdown complete") |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func (m *AppState) AddKafkaReader(kafkaUrl, topic, groupID string) *kafka.Reader { |
|
|
func (m *AppState) AddKafkaReader(kafkaUrl, topic, groupID string) *kafka.Reader { |
|
|
@@ -106,7 +127,7 @@ func (m *AppState) CleanKafkaReaders() { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
fmt.Println("Kafka readers graceful cleanup complete") |
|
|
|
|
|
|
|
|
fmt.Println("Kafka readers graceful shutdown complete") |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// GetBeacons returns thread-safe access to beacons list |
|
|
// GetBeacons returns thread-safe access to beacons list |
|
|
|