java版gRPC实战之二:服务发布和调用

本文详细介绍了如何使用Java实现gRPC服务的发布和客户端调用。首先展示了服务端的实现,包括继承`SimpleImplBase`并使用`@GrpcService`注解。接着,介绍了客户端的开发,包括配置gRPC客户端、创建拦截器和配置类,以及定义服务类。文章还提供了验证gRPC服务调用成功的步骤,并强调了准备和态度的重要性,以及针对应届毕业生的求职建议。
摘要由CSDN通过智能技术生成

package com.bolingcavalry.grpctutorials;

import com.bolingcavalry.grpctutorials.lib.HelloReply;

import com.bolingcavalry.grpctutorials.lib.SimpleGrpc;

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

import java.util.Date;

@GrpcService

public class GrpcServerService extends SimpleGrpc.SimpleImplBase {

@Override

public void sayHello(com.bolingcavalry.grpctutorials.lib.HelloRequest request,

io.grpc.stub.StreamObserver<com.bolingcavalry.grpctutorials.lib.HelloReply> responseObserver) {

HelloReply reply = HelloReply.newBuilder().setMessage("Hello " + request.getName() + ", " + new Date()).build();

responseObserver.onNext(reply);

responseObserver.onCompleted();

}

}

  • 上述GrpcServerService.java中有几处需要注意:
  1. 是使用@GrpcService注解,再继承SimpleImplBase,这样就可以借助grpc-server-spring-boot-starter库将sayHello暴露为gRPC服务;

  2. SimpleImplBase是前文中根据proto自动生成的java代码,在grpc-lib模块中;

  3. sayHello方法中处理完毕业务逻辑后,调用HelloReply.onNext方法填入返回内容;

  4. 调用HelloReply.onCompleted方法表示本次gRPC服务完成;

  • 至此,gRPC服务端编码就完成了,咱们接着开始客户端开发;

调用gRPC

  • 在父工程grpc-turtorials下面新建名为local-client的模块,其build.gradle内容如下,注意要使用spingboot插件、依赖grpc-client-spring-boot-starter库:

plugins {

id ‘org.springframework.boot’

}

dependencies {

implementation ‘org.projectlombok:lombok’

implementation ‘org.springframework.boot:spring-boot-starter’

implementation ‘org.springframework.boot:spring-boot-starter-web’

implementation ‘net.devh:grpc-client-spring-boot-starter’

implementation project(‘:grpc-lib’)

}

  • 应用配置文件grpc-tutorials/local-client/src/main/resources/application.yml,注意address的值就是gRPC服务端的信息,我这里local-server和local-client在同一台电脑上运行,请您根据自己情况来设置:

server:

port: 8080

spring:

application:

name: local-grpc-client

grpc:

client:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值