Documentation
¶
Overview ¶
Package rpc 提供标准化的 RPC 调用封装与响应处理工具。
Index ¶
- Constants
- Variables
- func NewGrpcClient(bootstrapConf conf.BootstrapConf) (*grpc.ClientConn, error)
- func ParseMetaKey(md metadata.MD, key string) (string, error)
- type ServiceContext
- func (sc *ServiceContext) BuildServiceMetadata() metadata.MD
- func (sc *ServiceContext) GetMetadata() metadata.MD
- func (sc *ServiceContext) MergeServiceMetadata(md metadata.MD) metadata.MD
- func (sc *ServiceContext) NewOutgoingContext(md metadata.MD, timeout time.Duration) (context.Context, context.CancelFunc)
- func (sc *ServiceContext) NewOutgoingContextFrom(base context.Context, md metadata.MD, timeout time.Duration) (context.Context, context.CancelFunc)
- func (sc *ServiceContext) WithExternalContext(md metadata.MD, timeout time.Duration) (context.Context, context.CancelFunc)
- func (sc *ServiceContext) WithInheritContext(parent context.Context, timeout time.Duration) (context.Context, context.CancelFunc)
- func (sc *ServiceContext) WithPureContext(timeout time.Duration) (context.Context, context.CancelFunc)
- type UserContextMeta
Constants ¶
View Source
const MetaKeyParseErrorFormat = "%s 解析失败"
MetaKeyParseErrorFormat 用于构造元信息缺失/解析失败的错误文本。
Variables ¶
View Source
var ( // ErrRemoteResponseIsNil 表示远程调用返回的响应对象为空。 ErrRemoteResponseIsNil = errors.New("远程响应为空") // ErrRemoteCallFailed 表示远程调用失败但未返回可读错误信息。 ErrRemoteCallFailed = errors.New("远程调用失败") )
Functions ¶
func NewGrpcClient ¶ added in v1.1.8
func NewGrpcClient(bootstrapConf conf.BootstrapConf) (*grpc.ClientConn, error)
Types ¶
type ServiceContext ¶ added in v1.1.2
type ServiceContext struct {
// contains filtered or unexported fields
}
ServiceContext 持有服务级别的静态元信息,用于构造服务间调用的出站上下文。 应在服务启动时初始化一次,作为单例注入或封装进中间件使用。
func NewServiceContext ¶ added in v1.1.2
func NewServiceContext(bootstrapConf conf.BootstrapConf) *ServiceContext
NewServiceContext 初始化服务上下文。 基于启动配置构建服务级别的静态 metadata,后续每次远程调用都会以此为基础进行扩展。
func (*ServiceContext) BuildServiceMetadata ¶ added in v1.1.6
func (sc *ServiceContext) BuildServiceMetadata() metadata.MD
BuildServiceMetadata 构建服务级别的静态元信息。
func (*ServiceContext) GetMetadata ¶ added in v1.1.3
func (sc *ServiceContext) GetMetadata() metadata.MD
GetMetadata 返回服务静态元信息的副本。
func (*ServiceContext) MergeServiceMetadata ¶ added in v1.1.6
func (sc *ServiceContext) MergeServiceMetadata(md metadata.MD) metadata.MD
MergeServiceMetadata 将本服务的静态元信息合并进目标 md。 RouteMethod 已存在时不覆盖,其余字段一律以服务静态值为准。
func (*ServiceContext) NewOutgoingContext ¶ added in v1.1.6
func (sc *ServiceContext) NewOutgoingContext(md metadata.MD, timeout time.Duration) (context.Context, context.CancelFunc)
NewOutgoingContext 将 metadata 写入新的出站上下文,并附加超时控制。
func (*ServiceContext) NewOutgoingContextFrom ¶ added in v1.1.8
func (sc *ServiceContext) NewOutgoingContextFrom(base context.Context, md metadata.MD, timeout time.Duration) (context.Context, context.CancelFunc)
NewOutgoingContextFrom 基于 base 创建出站上下文,并附加 metadata 与超时控制。
func (*ServiceContext) WithExternalContext ¶ added in v1.1.6
func (sc *ServiceContext) WithExternalContext(md metadata.MD, timeout time.Duration) (context.Context, context.CancelFunc)
WithExternalContext 将外部传入的 metadata 与本服务静态元信息合并,构造出站上下文。
func (*ServiceContext) WithInheritContext ¶ added in v1.1.2
func (sc *ServiceContext) WithInheritContext(parent context.Context, timeout time.Duration) (context.Context, context.CancelFunc)
WithInheritContext 在父上下文的基础上,创建携带完整链路信息的出站上下文。
func (*ServiceContext) WithPureContext ¶ added in v1.1.2
func (sc *ServiceContext) WithPureContext(timeout time.Duration) (context.Context, context.CancelFunc)
WithPureContext 创建一个与调用方请求完全隔离的纯净出站上下文。
type UserContextMeta ¶
type UserContextMeta struct {
Session string `json:"session"`
ClientIp string `json:"client_ip"`
UserId string `json:"user_id"`
AppId string `json:"app_id"`
TenantId string `json:"tenant_id"`
RoleIds []string `json:"role_ids"`
OrgIds []string `json:"org_ids"`
}
UserContextMeta 表示用户元信息
func ParseUserContextMeta ¶
func ParseUserContextMeta(md metadata.MD) (raw *UserContextMeta, err error)
ParseUserContextMeta 解析用户上下文元信息。
Click to show internal directories.
Click to hide internal directories.