tkcashgame_v4/app/eonline/cmd/worker/main.go

88 lines
2.2 KiB
Go

package main
import (
"flag"
"os"
"sandc/app/eonline/internal/conf"
zaplogger "github.com/go-kratos/kratos/contrib/log/zap/v2"
"github.com/go-kratos/kratos/v2/config"
"github.com/go-kratos/kratos/v2/config/file"
"github.com/go-kratos/kratos/v2/log"
"github.com/go-kratos/kratos/v2/middleware/tracing"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/exporters/jaeger"
"go.opentelemetry.io/otel/sdk/resource"
tracesdk "go.opentelemetry.io/otel/sdk/trace"
semconv "go.opentelemetry.io/otel/semconv/v1.4.0"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
// go build -ldflags "-X main.Version=x.y.z"
var (
// Name is the name of the compiled software.
Name = "eonline.async"
// Version is the version of the compiled software.
Version = "0.1.0"
// flagconf is the config flag.
flagconf string
id, _ = os.Hostname()
)
func init() {
flag.StringVar(&flagconf, "conf", "configs/config.yaml", "config path, eg: -conf config.yaml")
}
func main() {
flag.Parse()
encoderCfg := zapcore.EncoderConfig{
LevelKey: "level",
EncodeLevel: zapcore.LowercaseLevelEncoder,
}
out := zapcore.AddSync(os.Stdout) // replace real writer
core := zapcore.NewCore(zapcore.NewJSONEncoder(encoderCfg), out, zap.DebugLevel)
zlogger := zap.New(core).WithOptions()
logger := log.With(zaplogger.NewLogger(zlogger),
"ts", log.DefaultTimestamp,
"caller", log.DefaultCaller,
"service.id", id,
"service.name", Name,
"service.version", Version,
"trace_id", tracing.TraceID(),
"span_id", tracing.SpanID(),
)
c := config.New(
config.WithSource(
file.NewSource(flagconf),
),
)
if err := c.Load(); err != nil {
panic(err)
}
var bc conf.Bootstrap
if err := c.Scan(&bc); err != nil {
panic(err)
}
exp, err := jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(bc.Server.TraceEndpoint)))
if err != nil {
panic(err)
}
tp := tracesdk.NewTracerProvider(
tracesdk.WithBatcher(exp),
tracesdk.WithResource(resource.NewSchemaless(
semconv.ServiceNameKey.String(Name),
)),
)
otel.SetTracerProvider(tp)
job, cleanup, err := initApp(bc.Data, &bc, bc.Server, bc.Queue, logger)
if err != nil {
panic(err)
}
defer cleanup()
if err := job.Run(); err != nil {
panic(err)
}
}