35 lines
723 B
Go
35 lines
723 B
Go
package data
|
|
|
|
import (
|
|
"ky-go-kratos/app/websocket/internal/conf"
|
|
"ky-go-kratos/pkg/kafka"
|
|
|
|
"github.com/go-kratos/kratos/v2/log"
|
|
"github.com/google/wire"
|
|
)
|
|
|
|
// ProviderSet is data providers.
|
|
var ProviderSet = wire.NewSet(NewData, NewWebSocketRepo)
|
|
|
|
// Data .
|
|
type Data struct {
|
|
kafka *kafka.KafkaProducer
|
|
}
|
|
|
|
// NewData .
|
|
func NewData(c *conf.Data, logger log.Logger) (*Data, func(), error) {
|
|
log := log.NewHelper(logger)
|
|
|
|
kafkaWriter := kafka.NewKafkaWriter(c.Kafka.Brokers, c.Kafka.Topic)
|
|
|
|
cleanup := func() {
|
|
log.Info("closing the data resources")
|
|
if err := kafkaWriter.Close(); err != nil {
|
|
log.Error("failed to close kafka server: %v", err)
|
|
}
|
|
}
|
|
return &Data{
|
|
kafka: kafkaWriter,
|
|
}, cleanup, nil
|
|
}
|