当前位置: 首页 > 知识库问答 >
问题:

如何实现com.google.protobuf。阻止gRPC生成的Java代码的RPC通道?

邢高澹
2023-03-14

我最近取了一个代表gRPC服务的proto文件,并从中生成了Java代码。然而,所有的接口都需要一个com.google.protobuf.的BlockingRpcChannel,我不知道如何创建它。当我看例子时,我看到人们使用io.grpc.ManagedChannel,但那是因为生成的Java代码使用了该类型。我不确定这是因为我使用了特定版本的原型还是什么?

 public static BlockingInterface newBlockingStub(com.google.protobuf.BlockingRpcChannel channel) 
 {
   return new BlockingStub(channel);
 }

以下是我所看到的例子https://www.programcreek.com/java-api-examples/?api=io.grpc.ManagedChannel

在本教程中,建议执行以下操作,但接口不对齐。我有一个BlockRpcChannel,在本例中,他们可以使用ManagedChannel。生成的java代码不接受ManagedChannel[[https://grpc.io/docs/tutorials/basic/java/][1]][1]

在我的proto中,我使用了以下导入。不确定这是否影响了这一代人

syntax = "proto3";
import "google/api/annotations.proto";
import "google/protobuf/any.proto";

目标:我想弄清楚如何创建一个客户端,可以利用java生成的代码为gRPC。

下面是我的身材。gradle用来生成原型

/*
 * This file was generated by the Gradle 'init' task.
 *
 * This generated file contains a sample Java Library project to get you started.
 * For more details take a look at the Java Libraries chapter in the Gradle
 * User Manual available at https://docs.gradle.org/6.2.2/userguide/java_library_plugin.html
 */

plugins {
    // Apply the java-library plugin to add support for Java Library
    id 'java-library'
    id 'com.google.protobuf' version '0.8.8'
    id 'idea'
}

repositories {
    // Use jcenter for resolving dependencies.
    // You can declare any Maven/Ivy/file repository here.
    mavenCentral()
    mavenLocal()
}

def grpcVersion = '1.27.1' // CURRENT_GRPC_VERSION
def protobufVersion = '3.11.0'
def protocVersion = protobufVersion

dependencies {
    compile("io.grpc:grpc-netty:" + grpcVersion)
    compile("io.grpc:grpc-protobuf:" + grpcVersion)
    compile("com.google.protobuf:protobuf-java:3.11.0")
    compile("com.google.protobuf:protobuf-java-util:3.11.0")
    compile("io.grpc:grpc-stub:" + grpcVersion)
    compile("io.envoyproxy.protoc-gen-validate:protoc-gen-validate:0.3.0")
}

protobuf {
    protoc {
        artifact = "com.google.protobuf:protoc:${protocVersion}"
    }

    plugins {
        grpc {
            artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}"
        }
    }

    generatedFilesBaseDir = "$projectDir/src"

    generateProtoTasks {
        all()*.plugins {
            grpc {}
        }
    }
}

sourceSets {
    main {
        proto {
            // In addition to the default "src/main/proto"
            srcDir "proto"
            srcDir "src/main/grpc"
        }
    }
}

task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = "sources"
    from sourceSets.main.allSource
}

谢谢你的帮助谢谢德里克

共有1个答案

鲁辉
2023-03-14

@奶油汤是正确的。这个选项触发了这个问题,并阻止了生成gPRC的其他插件正常工作。

谢谢

 类似资料:
  • 我有2个代理(一个windows和一个linux)。在我的构建链中,我有三个构建配置。Linux构建配置夹在windows构建配置之间。构建链的步骤如下: 在windows计算机上运行生成,生成一个可执行文件。 在Linux计算机上安装服务器。 在windows计算机上运行可执行文件,这将消耗作为linux计算机上第二步的一部分构建的服务器。 null

  • 本文向大家介绍Java如何实现长图文生成的示例代码,包括了Java如何实现长图文生成的示例代码的使用技巧和注意事项,需要的朋友参考一下 很久很久以前,就觉得微博的长图文实现得非常有意思,将排版直接以最终的图片输出,收藏查看分享都很方便,现在则自己动手实现一个简单版本的 目标 首先定义下我们预期达到的目标:根据文字 + 图片生成长图文 目标拆解 支持大段文字生成图片 支持插入图片 支持上下左右边距设

  • 本文向大家介绍Java实现二维码生成的代码方法,包括了Java实现二维码生成的代码方法的使用技巧和注意事项,需要的朋友参考一下 1、支持QRcode、ZXing 二维码生成、解析; 2、QRCode 方式生成二维码支持添加图片,如下:

  • 我正在eclipse中使用protoc jar maven插件(3.11.4)从proto文件自动生成grpc存根。在生成代码时,我注意到proto中的my Bool数据类型字段(“proto3”)并不是生成的类的一部分。 不知道为什么只有bool数据类型字段会丢失,因为所有字符串数据类型都正确地出现在哪里。

  • 我正在尝试使用https://github.com/pseudomuto/protoc-gen-doc,我无法找到在消息中排除grpc服务/字段的一些API的方法。 在swagger中找到了相关的样式,但似乎找不到将其添加到Pro buf文件中的方法http://watson-developer-cloud.github.io/api-guidelines/swagger-coding-style

  • 本文向大家介绍C++全密码生成的实现代码,包括了C++全密码生成的实现代码的使用技巧和注意事项,需要的朋友参考一下 这里所谓的“全密码”指的是指定字符串中所有可能出现的密码。以字符串“0123456789”为例,可能出现的2位密码会有100个,即L^N个。(L代表字符串的长度,N代表要生成密码的位数)。 第一种方法:递归。这个比较容易理解,每分解出一个字符,设成新串,然后靠到上一个串上即可。代码如