propagation

package
v0.9.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 28, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package propagation 提供 MD 在 HTTP / gRPC 传输层的注入与提取实现。

仅透传以 "x-" 开头的 header/metadata key,避免将 Content-Type、 Authorization 等控制头意外带入业务透传链路。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GRPCClientInject

func GRPCClientInject(ctx context.Context) context.Context

GRPCClientInject 从 ctx 中取出 MD,将 x-* 键追加到 gRPC outgoing metadata, 用于 gRPC 客户端发出请求时透传。

使用方式:

ctx = propagation.GRPCClientInject(ctx)
resp, err := client.MyMethod(ctx, req)

func GRPCClientStreamInterceptor

func GRPCClientStreamInterceptor(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, streamer grpc.Streamer, opts ...grpc.CallOption) (grpc.ClientStream, error)

GRPCClientStreamInterceptor 自动将 context 中的 MD 注入到每次 gRPC stream 的 outgoing metadata。

func GRPCClientUnaryInterceptor

func GRPCClientUnaryInterceptor(ctx context.Context, method string, req, reply any, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error

GRPCClientUnaryInterceptor 自动将 context 中的 MD 注入到每次 gRPC 调用的 outgoing metadata。 注册到 grpc.Dial 的 WithChainUnaryInterceptor 即可无感透传。

func GRPCExtract

func GRPCExtract(ctx context.Context) metadata.MD

GRPCExtract 从 gRPC incoming metadata 中提取所有 x-* 键并返回 MD。

func GRPCServerStreamInterceptor

func GRPCServerStreamInterceptor(srv any, ss grpc.ServerStream, _ *grpc.StreamServerInfo, handler grpc.StreamHandler) error

GRPCServerStreamInterceptor 从入站 gRPC metadata 提取 MD 并注入 context。

func GRPCServerUnaryInterceptor

func GRPCServerUnaryInterceptor(ctx context.Context, req any, _ *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (any, error)

GRPCServerUnaryInterceptor 从入站 gRPC metadata 提取 MD 并注入 context。

func HTTPClientInject

func HTTPClientInject(ctx context.Context, r *http.Request)

HTTPClientInject 从 ctx 中取出 MD,将 x-* 键注入到 HTTP Request Header, 用于 HTTP 客户端发出请求时透传。

func HTTPExtract

func HTTPExtract(r *http.Request) metadata.MD

HTTPExtract 从 HTTP Request Header 中提取所有 x-* 键并返回 MD。

func HTTPInject

func HTTPInject(md metadata.MD, h http.Header)

HTTPInject 将 MD 中所有 x-* 键写入 HTTP Header(规范化为 Header-Case)。

func HTTPServerMiddleware

func HTTPServerMiddleware(next http.Handler) http.Handler

HTTPServerMiddleware 从入站请求提取 MD 并注入 context,同时将 MD 写回响应 Header 以便调用方感知(如链路追踪系统读取 x-request-id)。

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL