前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >grpc的特性

grpc的特性

原创
作者头像
李子健
发布2022-09-25 19:40:59
3330
发布2022-09-25 19:40:59
举报
文章被收录于专栏:每日一善每日一善

1 拦截器

server 全局拦截器

代码语言:txt
复制
@GrpcGlobalServerInterceptor
@Slf4j
public class LogInterceptor implements ServerInterceptor {

    @Override
    public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(ServerCall<ReqT, RespT> serverCall, Metadata metadata, ServerCallHandler<ReqT, RespT> serverCallHandler) {
        log.info(serverCall.getMethodDescriptor().getFullMethodName());
        return serverCallHandler.startCall(serverCall, metadata);
    }
}

client全局拦截器

代码语言:txt
复制
@GrpcGlobalClientInterceptor
@Slf4j
public class LogInterceptor implements ClientInterceptor {

    @Override
    public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(MethodDescriptor<ReqT, RespT> method, CallOptions callOptions, Channel next) {
        log.info("global .... LogInterceptor"+method.getFullMethodName());
        return next.newCall(method, callOptions);
    }
}

client自定义拦截器

代码语言:txt
复制
AdRpcGrpc.AdRpcBlockingStub stub = AdRpcGrpc.newBlockingStub(serverChannel);
        AdInfo.AdId adId = AdInfo.AdId.newBuilder().setId(id).build();
        AdInfo.Ad ad = stub
                .withDeadline(Deadline.after(100, TimeUnit.MILLISECONDS))
                .withInterceptors(log2Interceptor)
                .getAd(adId);

2 超时设置

代码语言:txt
复制
AdInfo.Ad ad = stub
                .withDeadline(Deadline.after(100, TimeUnit.MILLISECONDS))
                .withInterceptors(log2Interceptor)
                .getAd(adId);

但是超时可能会存在问题,初次建立连接会有短暂的超时情况

3 错误处理

代码语言:txt
复制
responseObserver.onError(new StatusException(Status.NOT_FOUND));

https://github.com/beckbikang/kgrpc

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 拦截器
  • 2 超时设置
  • 3 错误处理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档