gRPC远程实现Java调用python服务-demo

本文介绍了如何使用gRPC实现Java调用Python服务,详细讲解了从项目生成、添加依赖、编写proto文件到服务端和客户端的创建与运行。还涉及到Java-Java远程调用和Java-Python的远程调用,通过实例展示了Java客户端连接Python服务端的可行性。
摘要由CSDN通过智能技术生成

GRPC学习

1 GRPC配合java的简单应用

1.1 项目生成

用IDEA生成的一个Springboot应用。(这边是因为要做一个web项目,也可以只生成一个普通的带maven的java项目)。先放出一个整体的项目结构图,这个结构图的一些文件是整个项目编译(target文件夹中的文件)好才生成的。
在这里插入图片描述

1.2 添加依赖

首先是添加一下grpc对应的依赖。

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

除了以上方法,还可以像如下的方式添加全面的依赖,但是导入的依赖项比较多。

<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-all</artifactId>
    <version>1.26.0</version>
</dependency>

添加完依赖后,需要再添加一个build项,这些build的配置,是我们在做这个GRPC项目之前要用maven先compile一下,不然很多依赖是缺少的。

1.3 编写proto文件

helloworld.proto文件的路径是src/main/java/proto,在我的理解看来,这就是一个配置文件,包括生成的类的路径,内容如下。

syntax = "proto3";

option java_multiple_files = true;
option java_package = "io.grpc.examples.helloworld";
option java_outer_classname = "HelloWorldProto";
option objc_class_prefix = "HLW";

package helloworld;

// The greeting service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}

1.4 服务端

HelloWorldServer.java,其中 io.grpc.examples 是先编译完才有的,一开始没有编译是会报错的。

package com.example.lbh;

import io.grpc.Server;
import io.grpc.ServerBuilder;
import io.grpc.examples.helloworld.GreeterGrpc;
import io.grpc.examples.helloworld.HelloReply;
import io.grpc.examples.helloworld.HelloRequest;
import io.grpc.stub.StreamObserver;

import java.io.IOException;

public class HelloWorldServer {
   


    private int port = 50051;
    private Server server;

    private void start() throws IOException {
   
        server = ServerBuilder.forPort(port)
                .addService(new GreeterImpl())
                .build()
                .start();

        System.out.println("service start...");

        Runtime.getRuntime().addShutdownHook(new Thread() {
   

            @Override
            public void run() {
   

                System.err.println("*** shutting down gRPC server since JVM is shutting down");
                HelloWorldServer.this.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值