java版gRPC实战之四:客户端流

本文介绍了如何在Java中实现gRPC的客户端流式调用。通过配置文件、启动类和服务端、客户端的代码示例,展示了如何建立连接、发送数据以及处理服务端响应。重点在于GrpcServerService的实现,以及客户端如何使用StreamObserver进行交互。此外,还提供了一个Web接口用于验证gRPC调用的正确性。
摘要由CSDN通过智能技术生成
  • 配置文件application.yml:

spring:

application:

name: client-stream-server-side

gRPC有关的配置,这里只需要配置服务端口号

grpc:

server:

port: 9900

  • 启动类ClientStreamServerSideApplication.java的代码就不贴了,普通的springboot启动类而已;

  • 重点是提供grpc服务的GrpcServerService.java,请结合前面小结的第五点来阅读代码,咱们要做的就是给上层框架返回一个匿名类,至于里面的onNext、onCompleted方法何时被调用是上层框架决定的,另外还准备了成员变量totalCount,这样就可以记录总数了:

package com.bolingcavalry.grpctutorials;

import com.bolingcavalry.grpctutorials.lib.AddCartReply;

import com.bolingcavalry.grpctutorials.lib.CartServiceGrpc;

import com.bolingcavalry.grpctutorials.lib.ProductOrder;

import io.grpc.stub.StreamObserver;

import lombok.extern.slf4j.Slf4j;

import net.devh.boot.grpc.server.service.GrpcService;

@GrpcService

@Slf4j

public class GrpcServerService extends CartServiceGrpc.CartServiceImplBase {

@Override

public StreamObserver addToCart(StreamObserver responseObserver) {

// 返回匿名类,给上层框架使用

return new StreamObserver() {

// 记录处理产品的总量

private int totalCount = 0;

@Override

public void onNext(ProductOrder value) {

log.info(“正在处理商品[{}],数量为[{}]”,

value.getProductId(),

value.getNumber());

// 增加总量

totalCount += value.getNumber();

}

@Override

public void onError(Throwable t) {

log.error(“添加购物车异常”, t);

}

@Override

public void onCompleted() {

log.info(“添加购物车完成,共计[{}]件商品”, totalCount);

responseObserver.onNext(AddCartReply.newBuilder()

.setCode(10000)

.setMessage(String.format(“添加购物车完成,共计[%d]件商品”, totalCount))

.build());

responseObserver.onCompleted();

}

};

}

}

开发客户端应用

  • 在父工程grpc-turtorials下面新建名为client-stream-server-side的模块,其build.gradle内容如下:
  • 18
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值