Я работаю над несколькими микро-сервисами gRPC и использую контекст для передачи любых заголовков и метаданных.Я использую opentracing для целей трассировки, и одна из моих служб gRPC вызывает другую службу gRPC, и в этот момент у меня возникают проблемы с распространением контекста, поскольку он не сохраняет метаданные, а также traceID.Мой код такой, как показано ниже
func A(ctx context.Context) {
metadata:=extractMetadata(ctx)
conn := &grpc.ClientConn{}
zipkinCtx := opentracing.SpanFromContext(ctx).Context().(gozipkin.SpanContext)
client := pb.NewDClient(conn)
reply, err := client.LookupProperty(metadata.NewOutgoingContext(context.Background(), metadata.New(metadata)))
}
. В приведенном выше коде я вызываю службу D
, для которой мне пришлось воссоздать новый контекст с метаданными, с которыми у меня все в порядке, но я не уверен, как яможет распространять tracIds на сервис D