栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

grpc之Java实战客户端篇

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

grpc之Java实战客户端篇

grpc之Java实战客户端篇
  • proto文件
  • 客户端pom依赖
  • 客户端代码编写

紧接上一篇grpc之Java实战服务端篇,已经大致说清楚了grpc的服务端是怎么去实现的,这一篇我们就检点说一说客户端的实现.

proto文件

这里需要注意的是客户端与服务端的proto文件必须是相同的,其实这个不难理解,就相当于彼此间的一个通行标记,只有互相能够识别的时候才能够通,所以第一步就是将proto文件复制过来.

客户端pom依赖

客户端的pom依赖跟服务端的是一样的,同样是引用这些基本的grpc和protobuf就可以了:


        1.29.0
        3.11.0
    

    
        
        
            io.grpc
            grpc-netty-shaded
            ${grpc.version}
        
        
        
            io.grpc
            grpc-protobuf
            ${grpc.version}
        
        
        
            io.grpc
            grpc-stub
            ${grpc.version}
        
        
         
            org.apache.tomcat
            annotations-api
            6.0.53
            provided
        

    

    
        
            
                kr.motd.maven
                os-maven-plugin
                1.5.0.Final
            
        

        
            
                
                org.xolstice.maven.plugins
                
                protobuf-maven-plugin
                0.5.1

                
                    
                    com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}
                    
                    grpc-java
                    
                    io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}
                    
                    proto
                

                
                    
                        
                            
                            compile
                            
                            compile-custom
                        
                    
                
            
        
    
客户端代码编写

相较于服务端,客户端的实现要简单许多,只需要新建一个启动方法就可以了,我把目录结构截图:

我将客户端的代码大致分为一下几个步骤:

  1. 定义好IP和端口
  2. 创建一个通讯管道,通过构造器传入定义的服务IP和端口
  3. 通过使用构造器模式给参数赋值
  4. 调用服务
  5. 关闭服务
    代码如下
package com.xj.news;

import com.xj.news.proto.HelloProto;
import com.xj.news.proto.NewsServiceGrpc;
import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder;

import java.util.List;

public class NewClient {
    private static final String host = "localhost";//服务器
    private static final int serverPort = 8888;//服务端口号

    public static void main(String[] args) {
        //创建一个通讯管道channel,构造器传入定义的服务IP和端口,usePlaintext()表示一个传输文本的通道
        ManagedChannel channel = ManagedChannelBuilder.forAddress(host,serverPort)
                .usePlaintext().build();
        try {
            NewsServiceGrpc.NewsServiceBlockingStub blockingStub = NewsServiceGrpc.newBlockingStub(channel);
            HelloProto.NewsRequest request = HelloProto.NewsRequest.newBuilder().setDate("20220102").build();
            HelloProto.NewsResponse response = blockingStub.list(request);
            List newsList = response.getNewsList();
            for (HelloProto.News news:newsList ) {
                System.out.println(news.getTitle()+":"+news.getContent());
            }
        }finally {
            channel.shutdown();
        }
    }
}

一个简单的grpc例子到这已经完全结束,因为git的改动,只能是一个私有项目,现在把他转存到我的百度网盘,供需要的朋友下载
链接:https://pan.baidu.com/s/1jy5fAQy81nGp0-YYvws8sw
提取码:1111

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1036430.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号