在 Java 中使用 gRPC 和 ProtoBuf


  歡迎回到構建 Web 服務器系列。到目前為止,我們主要專注於在 GoLang 中編寫 Web 服務器。但是,我收到了寫一篇文章的請求,即如何使用 Java 完成 gRPC 實現以及實現相同目標的可用庫和選項有哪些。

        先決條件:基本了解SpringSpring BootDependency InjectionRPC 和 ProtoBuf

  我們將使用 spring boot 來初始化一個基本服務,然后在它上面添加一個 RPC 服務器和客戶端。

 編寫 Java gRPC 服務器的步驟

 1. 編寫原型定義

// 將以下依賴項添加到依賴項部分。此依賴項可幫助您使用 io.grpc 模塊開箱即用地運行基本的 GRPC 服務器。
<dependency>
<groupId>net.devh</groupId>
<artifactId>grpc-server-spring-boot-autoconfigure</artifactId>
<version>2.12.0.RELEASE</version>
</dependency>//將以下擴展添加到構建部分。此擴展在 protobuf 編譯步驟期間添加了操作系統特定的邏輯。
<extensions>
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>${os-maven-plugin.version}</version>
</extension >
</擴展>// 將以下插件添加到構建部分。該插件編譯 protobuf 文件並將其添加到目標文件夾中。
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>${protobuf-maven-plugin.version}</version>
<configuration>
< protocArtifact>
com.google.protobuf: protoc :3.3.0:exe:${os.detected.classifier}
</protocArtifact>
<pluginId>grpc-java</pluginId>
<pluginArtifact>
io.grpc:protoc-gen-grpc -java:1.4.0:exe:${os.detected.classifier}
</pluginArtifact>
</configuration>
<executions>


<goal>compile</goal>
<goal>compile-custom</goal>
</goals>
</execution>
</executions>
</plugin>// 將以下內容添加到屬性部分
<protobuf-maven-plugin.version>0.6.1</protobuf-maven-plugin.version>
<os-maven-plugin.version>1.6.1</os-maven-plugin.版本>


  對pom.xml文件進行更改后,運行mvn clean install以編譯代碼並從 protobuf 定義生成所需的樣板 Java 代碼。

  2.你好世界服務器

接下來,我們需要初始化服務器並注冊我們的 gRPC 服務實現。將您的GrpcServerApplication.java文件修改為如下所示:
@SpringBootApplication
public class GrpcServerApplication {

public static void main(String[] args) throws IOException, InterruptedException {
Server server = ServerBuilder. forPort(8080)
.addService(新HelloServiceImpl())構建()。

系統。out .println("正在啟動服務器...");
server.start();
系統。out .println("服務器啟動了!");
server.awaitTermination();
}

}
  在上面的文件中,我們在端口上創建了一個新的 gRPC 服務器8080並注冊我們HelloServiceImpl的。

  3. 編譯和測試




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM