代码拉取完成,页面将自动刷新
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
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。