1 Star 0 Fork 0

Cruvie Kang / kk_go_kit

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
ctx.go 1.15 KB
一键复制 编辑 原始数据 按行查看 历史
cruvie 提交于 2024-04-30 01:04 . update
package kk_grpc
import (
"context"
"gitee.com/cruvie/kk_go_kit/kk_stage"
"google.golang.org/grpc/metadata"
"log/slog"
"time"
)
// GetTraceIdFromGrpcCtx
// get traceId from metadata set by
//
// metadata.AppendToOutgoingContext() or metadata.NewOutgoingContext()
func GetTraceIdFromGrpcCtx(ctx context.Context) (traceId string) {
md, ok := metadata.FromIncomingContext(ctx)
if ok {
strings := md.Get(kk_stage.TraceIdKey)
if len(strings) > 0 {
traceId = strings[0]
}
} else {
slog.Error("get TraceId from ctx failed")
}
return traceId
}
const TimeoutDur = 10 * time.Second
func NewCallGrpcCtx(stage *kk_stage.Stage) (ctx context.Context, cancelFunc context.CancelFunc) {
ctx = metadata.AppendToOutgoingContext(stage.Tracer.Context, kk_stage.TraceIdKey, stage.TraceId)
withTimeoutCtx, cancelFunc := context.WithTimeout(ctx, TimeoutDur)
return withTimeoutCtx, cancelFunc
}
func NewGrpcStage(tracerCtx context.Context, serviceName string, debugMode bool) (stage *kk_stage.Stage) {
stage = kk_stage.NewStage(context.Background(), serviceName, debugMode)
stage.Tracer.Context = tracerCtx
stage.TraceId = GetTraceIdFromGrpcCtx(tracerCtx)
return stage
}
1
https://gitee.com/cruvie/kk_go_kit.git
git@gitee.com:cruvie/kk_go_kit.git
cruvie
kk_go_kit
kk_go_kit
6c1fc534a942

搜索帮助