日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java中使用grpc和protobuf

發布時間:2023/12/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中使用grpc和protobuf 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第一步

使用maven,比較簡單。依賴項中添加:

<dependency><groupId>io.grpc</groupId><artifactId>grpc-netty</artifactId><version>1.4.0</version> </dependency> <dependency><groupId>io.grpc</groupId><artifactId>grpc-protobuf</artifactId><version>1.4.0</version> </dependency> <dependency><groupId>io.grpc</groupId><artifactId>grpc-stub</artifactId><version>1.4.0</version> </dependency>

在pom的build中添加插件配置:

具體可以查看文檔說明: https://github.com/grpc/grpc-java/ <plugin><groupId>org.xolstice.maven.plugins</groupId><artifactId>protobuf-maven-plugin</artifactId><version>0.5.0</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><execution><goals><goal>compile</goal><goal>compile-custom</goal></goals></execution></executions></plugin>

第二步

執行命令mvn generate-sources
這里會下載對應的protobuf編譯器,和grpc的生成插件。

>>>mvn generate-sources [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Detecting the operating system and CPU architecture [INFO] ------------------------------------------------------------------------ [INFO] os.detected.name: osx [INFO] os.detected.arch: x86_64 [INFO] os.detected.classifier: osx-x86_64 [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building grpc 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- protobuf-maven-plugin:0.5.0:compile (default) @ grpc --- Downloading: https://repo.maven.apache.org/maven2/com/google/protobuf/protoc/3.3.0/protoc-3.3.0.pom Downloaded: https://repo.maven.apache.org/maven2/com/google/protobuf/protoc/3.3.0/protoc-3.3.0.pom (4 KB at 0.7 KB/sec) Downloading: https://repo.maven.apache.org/maven2/com/google/protobuf/protoc/3.3.0/protoc-3.3.0-osx-x86_64.exe 1932/4958 KB Downloaded: https://repo.maven.apache.org/maven2/com/google/protobuf/protoc/3.3.0/protoc-3.3.0-osx-x86_64.exe (4958 KB at 40.7 KB/sec) [INFO] Compiling 1 proto file(s) to /Users/david/grpc/grpc_example/grpc-java-example/target/generated-sources/protobuf/java [INFO] [INFO] --- protobuf-maven-plugin:0.5.0:compile-custom (default) @ grpc --- Downloading: https://repo.maven.apache.org/maven2/io/grpc/protoc-gen-grpc-java/1.4.0/protoc-gen-grpc-java-1.4.0.pom Downloaded: https://repo.maven.apache.org/maven2/io/grpc/protoc-gen-grpc-java/1.4.0/protoc-gen-grpc-java-1.4.0.pom (2 KB at 3.1 KB/sec) Downloading: https://repo.maven.apache.org/maven2/io/grpc/protoc-gen-grpc-java/1.4.0/protoc-gen-grpc-java-1.4.0-osx-x86_64.exe Downloaded: https://repo.maven.apache.org/maven2/io/grpc/protoc-gen-grpc-java/1.4.0/protoc-gen-grpc-java-1.4.0-osx-x86_64.exe (4263 KB at 24.1 KB/sec) [INFO] Compiling 1 proto file(s) to /Users/david/grpc/grpc_example/grpc-java-example/target/generated-sources/protobuf/grpc-java [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 05:06 min [INFO] Finished at: 2017-08-28T11:17:53+08:00 [INFO] Final Memory: 9M/182M [INFO] ------------------------------------------------------------------------>>>

這步操作會生成protoco對應的java消息和數據結構,已經grpc相關的stub源文件。

maven會在.m2/repository/io/grpc/protoc-gen-grpc-java/1.4.0下載plugin文件protoc-gen-grpc-java-1.4.0-osx-x86_64.exe,根據最新版本的不同而文件版本不同。

在程序的目錄target下,也會下載一份protoc和grpc的plguin文件比如我的mac系統下,對應的2個文件如下的命令行所示。

可以使用命令

target/protoc-plugins/protoc-3.3.0-osx-x86_64.exe -I ../../ --java_out ../../grpc-java/ --plugin=protoc-gen-grpc-java=target/protoc-plugins/protoc-gen-grpc-java-1.4.0-osx-x86_64.exe --grpc-java_out=../../grpc_java_hello ../../hello.proto

Note 要是需要protoc和grpc-java-plugin生成grpc的stub源碼,要使用–grpc-java_out參數,否則,沒有對應的grpc-stub源碼生成。


第三步

將生成的java文件都添加到工程的源碼管理中,讓工程可以使用這些自動生成的源碼。

修改server和client的邏輯

在client和server添加自己的業務邏輯。讓client可以通過grpc,使用protobuf傳遞消息,調用server端方法。

比如我們的proto文件定義:

service Greeter {rpc sayHello(helloRequest) returns (helloResponse) {} }message helloRequest {string name=1; }message helloResponse {string greet=1; }

執行及測試

因為grpc的應用依賴項比較多,簡單的執行方法就是在開發IDE環境中啟動執行。

  • 先以Java Application的方式啟動server。
  • 再以java Application的方式啟動client。

就可以看到執行結果了。

總結

以上是生活随笔為你收集整理的java中使用grpc和protobuf的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。