mirror of
https://github.com/go-kratos/kratos.git
synced 2025-03-17 21:07:54 +02:00
parent
46acad3400
commit
fc539738f1
@ -2,9 +2,10 @@ package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"os"
|
||||
|
||||
"go.opentelemetry.io/otel/exporters/trace/jaeger"
|
||||
"go.opentelemetry.io/otel/sdk/trace"
|
||||
"os"
|
||||
|
||||
"github.com/go-kratos/kratos/examples/blog/internal/conf"
|
||||
"github.com/go-kratos/kratos/v2"
|
||||
@ -75,10 +76,11 @@ func main() {
|
||||
}
|
||||
defer flush()
|
||||
|
||||
app, err := initApp(bc.Server, bc.Data, tp, logger)
|
||||
app, cleanup, err := initApp(bc.Server, bc.Data, tp, logger)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer cleanup()
|
||||
|
||||
// start and wait for stop signal
|
||||
if err := app.Run(); err != nil {
|
||||
|
@ -17,6 +17,6 @@ import (
|
||||
)
|
||||
|
||||
// initApp init kratos application.
|
||||
func initApp(*conf.Server, *conf.Data, trace.TracerProvider, log.Logger) (*kratos.App, error) {
|
||||
func initApp(*conf.Server, *conf.Data, trace.TracerProvider, log.Logger) (*kratos.App, func(), error) {
|
||||
panic(wire.Build(server.ProviderSet, data.ProviderSet, biz.ProviderSet, service.ProviderSet, newApp))
|
||||
}
|
||||
|
@ -19,10 +19,10 @@ import (
|
||||
// Injectors from wire.go:
|
||||
|
||||
// initApp init kratos application.
|
||||
func initApp(confServer *conf.Server, confData *conf.Data, tracerProvider trace.TracerProvider, logger log.Logger) (*kratos.App, error) {
|
||||
dataData, err := data.NewData(confData, logger)
|
||||
func initApp(confServer *conf.Server, confData *conf.Data, tracerProvider trace.TracerProvider, logger log.Logger) (*kratos.App, func(), error) {
|
||||
dataData, cleanup, err := data.NewData(confData, logger)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, nil, err
|
||||
}
|
||||
articleRepo := data.NewArticleRepo(dataData, logger)
|
||||
articleUsecase := biz.NewArticleUsecase(articleRepo, logger)
|
||||
@ -30,5 +30,7 @@ func initApp(confServer *conf.Server, confData *conf.Data, tracerProvider trace.
|
||||
httpServer := server.NewHTTPServer(confServer, tracerProvider, blogService)
|
||||
grpcServer := server.NewGRPCServer(confServer, tracerProvider, blogService)
|
||||
app := newApp(logger, httpServer, grpcServer)
|
||||
return app, nil
|
||||
return app, func() {
|
||||
cleanup()
|
||||
}, nil
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package data
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/go-kratos/kratos/examples/blog/internal/conf"
|
||||
"github.com/go-kratos/kratos/examples/blog/internal/data/ent"
|
||||
"github.com/go-kratos/kratos/v2/log"
|
||||
@ -23,7 +24,7 @@ type Data struct {
|
||||
}
|
||||
|
||||
// NewData .
|
||||
func NewData(conf *conf.Data, logger log.Logger) (*Data, error) {
|
||||
func NewData(conf *conf.Data, logger log.Logger) (*Data, func(), error) {
|
||||
log := log.NewHelper("data", logger)
|
||||
client, err := ent.Open(
|
||||
conf.Database.Driver,
|
||||
@ -31,12 +32,12 @@ func NewData(conf *conf.Data, logger log.Logger) (*Data, error) {
|
||||
)
|
||||
if err != nil {
|
||||
log.Errorf("failed opening connection to sqlite: %v", err)
|
||||
return nil, err
|
||||
return nil, nil, err
|
||||
}
|
||||
// Run the auto migration tool.
|
||||
if err := client.Schema.Create(context.Background()); err != nil {
|
||||
log.Errorf("failed creating schema resources: %v", err)
|
||||
return nil, err
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
rdb := redis.NewClient(&redis.Options{
|
||||
@ -48,8 +49,17 @@ func NewData(conf *conf.Data, logger log.Logger) (*Data, error) {
|
||||
ReadTimeout: conf.Redis.ReadTimeout.AsDuration(),
|
||||
})
|
||||
rdb.AddHook(redisotel.TracingHook{})
|
||||
return &Data{
|
||||
d := &Data{
|
||||
db: client,
|
||||
rdb: rdb,
|
||||
}
|
||||
return d, func() {
|
||||
log.Info("message", "closing the data resources")
|
||||
if err := d.db.Close(); err != nil {
|
||||
log.Error(err)
|
||||
}
|
||||
if err := d.rdb.Close(); err != nil {
|
||||
log.Error(err)
|
||||
}
|
||||
}, nil
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user