java GRPC远程调用---响应流接口(三)

我们在.proto文件中再增加一个方法,这回这个方法的返回值被 stream 关键字修饰

1

rpc methodResultStream(Request) returns (stream Result){}

  

清缓存,重新编译

3.1.服务端

 实现刚刚新加的方法

1

2

3

4

5

6

7

8

9

10

11

12

13

@Override

    public void methodResultStream(Request request, StreamObserver<Result> responseObserver) {

        System.out.print("收到了请求 \n");

        Result result = Result.newBuilder().setResult1("result1").setResult2("result2").build();

        responseObserver.onNext(result);

        responseObserver.onNext(result);

        try {

            Thread.sleep(2000);

        }

        catch (Exception ex){}

        responseObserver.onNext(result);

        responseObserver.onCompleted();

    }

  

 

这里跟普通的差不多,只是我们返回了三次结果

1

2

3

4

5

6

7

responseObserver.onNext(result);

responseObserver.onNext(result);

try {

    Thread.sleep(2000);

}

catch (Exception ex){}

responseObserver.onNext(result);

  

3.2.客户端

没啥好加的了,直接上测试

1

2

3

4

5

6

7

8

9

10

11

@Test

    public void contextLoads3() {

        Request request = Request.newBuilder().setRequest1("test1").setRequest2("test2").build();

        Iterator<Result> result = javaGrpcClient.run(o -> o.methodResultStream(request));

        result.forEachRemaining(o ->

        {

            System.out.print("返回了结果 \n");

        });

        System.out.print("结束 \n");

    }

  

返回流请求是同步的,所以要调同步的方法,返回了一个迭代器

1

Iterator<Result> result = javaGrpcClient.run(o -> o.methodResultStream(request));

  

迭代器中有服务端的所有返回结果

1

2

3

4

result.forEachRemaining(o ->

{

    System.out.print("返回了结果 \n");

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值