本文介绍: 然后我们创建一个application.yml文件,指定两个服务的启动端口,不要设置为一样的端口,因为HTTP和gRPC是两个不同的协议,它们的实现方式和通信方式都不同。引入spring–boot–starter–web依赖和grpc–client–spring–boot–starter依赖。这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。作者:神的孩子都在歌唱。做完以上操作后,我们就可以编写http服务和grpc服务了,以下是一个简单的测试代码。作者:神的孩子都在歌唱。
一. 创建项目
二. 引入依赖
引入spring–boot–starter-web依赖和grpc–client–spring–boot-starter依赖
<dependencies>
<!-- BEGIN 如果想使用 Tomcat 注释掉以下代码 -->
<!-- SpringBoot Web容器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-tomcat</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
<version>2.5.4</version>
</dependency>
<!-- web 容器使用 undertow 性能更强 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
<version>2.5.4</version>
</dependency>
<dependency>
<groupId>net.devh</groupId>
<artifactId>grpc-client-spring-boot-starter</artifactId>
<version>2.13.1.RELEASE</version>
</dependency>
<dependency>
<groupId>net.devh</groupId>
<artifactId>grpc-server-spring-boot-starter</artifactId>
<version>2.13.1.RELEASE</version>
</dependency>
</dependencies>
<build>
<extensions>
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>1.6.2</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.6.1</version>
<configuration>
<protocArtifact>com.google.protobuf:protoc:3.5.1-1:exe:${os.detected.classifier}</protocArtifact>
<pluginId>grpc-java</pluginId>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.16.1:exe:${os.detected.classifier}</pluginArtifact>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>compile-custom</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
然后我们创建一个application.yml文件,指定两个服务的启动端口,不要设置为一样的端口,因为HTTP和gRPC是两个不同的协议,它们的实现方式和通信方式都不同。在同一个端口上同时使用HTTP和gRPC会导致端口冲突,无法正常工作。
# 开发环境配置
server:
# 服务器的HTTP端口,默认为8089
port: 8089
grpc:
server:
port:
9091
三. 测试
做完以上操作后,我们就可以编写http服务和grpc服务了,以下是一个简单的测试代码
启动类
/**
* @author: 那就叫小智吧
* @date: 2023/9/18 14:50
* @Version 1.0
* @Description:
*/
@SpringBootApplication
public class ChenApplication {
public static void main(String[] args)
{ SpringApplication.run(ChenApplication.class, args);
System.out.println("启动成功");
}
}
3.1 http服务
/**
* @author: 那就叫小智吧
* @date: 2023/9/18 13:43
* @Version 1.0
* @Description:
*/
@RestController
public class HelloWordWebController {
@GetMapping(value = "/hello")
public String hello() {
return "神的孩子都在歌唱";
}
}
测试结果
3.2 grpc服务
syntax = "proto3";
option java_multiple_files = true;
package helloWordGrpc;
message Person {
string first_name = 1;
string last_name = 2;
}
message Greeting {
string message = 1;
}
service HelloWorldService {
rpc sayHello (Person) returns (Greeting);
}
这里需要mvn clean 和mvn install 一下 ,确保target文件里面有这几个对象
创建一个HelloWorldGrpcController接口
@GrpcService
public class HelloWorldGrpcController extends HelloWorldServiceGrpc.HelloWorldServiceImplBase {
@Override
public void sayHello(Person request,
StreamObserver<Greeting> responseObserver) {
String message = "Hello " + request.getFirstName() + " "
+ request.getLastName() + "!";
Greeting greeting =
Greeting.newBuilder().setMessage(message).build();
responseObserver.onNext(greeting);
responseObserver.onCompleted();
}
}
测试结果
四. 整体代码结构
作者:神的孩子都在歌唱
本人博客:https://blog.csdn.net/weixin_46654114
转载说明:务必注明来源,附带本人博客连接。
原文地址:https://blog.csdn.net/weixin_46654114/article/details/134617733
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_10321.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。