国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【gRPC實(shí)現(xiàn)java端調(diào)用go的服務(wù)】

這篇具有很好參考價(jià)值的文章主要介紹了【gRPC實(shí)現(xiàn)java端調(diào)用go的服務(wù)】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

實(shí)現(xiàn)一個(gè)客戶端調(diào)用go服務(wù)端的簡(jiǎn)單服務(wù)

1.項(xiàng)目結(jié)構(gòu)如下

【gRPC實(shí)現(xiàn)java端調(diào)用go的服務(wù)】,java,golang,python
在lib下面的存在一個(gè)simple.proto文件,我們使用插件protobuf-maven-plugin對(duì)其進(jìn)行編譯。配置如下:

 <properties>
        <os-maven-plugin.version>1.5.0.Final</os-maven-plugin.version>
        <protobuf-maven-plugin.version>0.5.1</protobuf-maven-plugin.version>
        <protoc.version>3.5.1-1</protoc.version>
        <protobuf.version>3.6.0</protobuf.version>
        <grpc.version>1.13.1</grpc.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
            <version>${protobuf.version}</version>
        </dependency>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-netty</artifactId>
            <version>${grpc.version}</version>
        </dependency>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-protobuf</artifactId>
            <version>${grpc.version}</version>
        </dependency>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-stub</artifactId>
            <version>${grpc.version}</version>
        </dependency>
    </dependencies>

    <build>
        <extensions>
            <extension>
                <groupId>kr.motd.maven</groupId>
                <artifactId>os-maven-plugin</artifactId>
                <version>${os-maven-plugin.version}</version>
            </extension>
        </extensions>
        <plugins>
            <plugin>
                <groupId>org.xolstice.maven.plugins</groupId>
                <artifactId>protobuf-maven-plugin</artifactId>
                <version>${protobuf-maven-plugin.version}</version>
                <configuration>
                    <protocArtifact>com.google.protobuf:protoc:${protoc.version}:exe:${os.detected.classifier}</protocArtifact>
                    <pluginId>grpc-java</pluginId>
                    <pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}</pluginArtifact>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>compile-custom</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

利用插件進(jìn)行編譯
【gRPC實(shí)現(xiàn)java端調(diào)用go的服務(wù)】,java,golang,python
后可以獲得對(duì)應(yīng)的文件。
【gRPC實(shí)現(xiàn)java端調(diào)用go的服務(wù)】,java,golang,python

2. Client

在client下創(chuàng)建一個(gè)grpc的包,并將以上兩個(gè)文件放入。最后創(chuàng)建一個(gè)SimpleClient。

package com.iq50.client.grpc;

import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder;
import java.util.concurrent.TimeUnit;

/**
 * gRPC客戶端示例
 */
public class SimpleClient {

    // gRPC通信通道
    private final ManagedChannel channel;
    
    // 自動(dòng)生成的存根
    private final SimpleGrpc.SimpleBlockingStub blockingStub;

    /**
     * 構(gòu)造函數(shù),創(chuàng)建SimpleClient實(shí)例
     * @param host 服務(wù)器主機(jī)名
     * @param port 服務(wù)器端口
     */
    public SimpleClient(String host, int port){
        this(ManagedChannelBuilder.forAddress(host, port).usePlaintext());
    }

    /**
     * 私有構(gòu)造函數(shù),接受ManagedChannelBuilder參數(shù)
     * @param channelBuilder 通道構(gòu)建器
     */
    private SimpleClient(ManagedChannelBuilder<?> channelBuilder) {
        // 構(gòu)建通信通道
        channel = channelBuilder.build();
        // 根據(jù)通道返回的信息創(chuàng)建存根
        blockingStub = SimpleGrpc.newBlockingStub(channel);
    }

    /**
     * 關(guān)閉通信通道
     * @throws InterruptedException 線程中斷異常
     */
    public void shutdown() throws InterruptedException {
        // 關(guān)閉通道并等待最多5秒鐘確保關(guān)閉完成
        channel.shutdown().awaitTermination(5, TimeUnit.SECONDS);
    }

    /**
     * 向gRPC服務(wù)發(fā)送問(wèn)候消息
     * @param name 問(wèn)候消息的名稱
     * @return 服務(wù)響應(yīng)的消息
     */
    public String sayHello(String name) {
        // 創(chuàng)建HelloRequest對(duì)象
        SimpleOuterClass.HelloRequest req = SimpleOuterClass.HelloRequest.newBuilder().setName(name).build();
        // 調(diào)用服務(wù)方法獲取響應(yīng)
        SimpleOuterClass.HelloReplay replay = blockingStub.sayHello(req);
        // 返回服務(wù)響應(yīng)的消息
        return replay.getMessage();
    }
}

最后在Application中調(diào)用即可文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-756842.html

package com.iq50.client;

import com.iq50.client.grpc.SimpleClient;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ClientApplication {

    public static void main(String[] args) {

        SpringApplication.run(ClientApplication.class, args);

        SimpleClient client = new SimpleClient("127.0.0.1",50051);
        String replay = client.sayHello("Jack");
        try {
            client.shutdown();
        } catch (InterruptedException e) {
            System.out.println("channel關(guān)閉異常:"+ e.getMessage());
        }
        System.out.println("回應(yīng)是"+replay);
    }

}

到了這里,關(guān)于【gRPC實(shí)現(xiàn)java端調(diào)用go的服務(wù)】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 復(fù)雜gRPC之go調(diào)用go

    復(fù)雜gRPC之go調(diào)用go

    我們使用了一個(gè)較為復(fù)雜的proto文件,這個(gè)文件的功能主要是用來(lái)定位的,詳細(xì)內(nèi)容可以看代碼中的注解 相比之前的文件來(lái)說(shuō),這個(gè)方法中定義了四種類型的方法。 ● 簡(jiǎn)單的RPC接口 ? ○ 客戶端使用存根發(fā)送請(qǐng)求到服務(wù)器并等待響應(yīng)返回,就像平常的函數(shù)調(diào)用一樣。 ● 一個(gè)

    2024年02月05日
    瀏覽(28)
  • [golang 微服務(wù)] 4.  gRPC介紹,Protobuf結(jié)合gRPC 創(chuàng)建微服務(wù)

    [golang 微服務(wù)] 4. gRPC介紹,Protobuf結(jié)合gRPC 創(chuàng)建微服務(wù)

    gRPC是一個(gè) 高性能 、 開(kāi)源 和 通用 的 RPC 框架 , 面向移動(dòng)端 和 HTTP/2 設(shè)計(jì),目前提供 C、Java 和 Go語(yǔ)言版本,分別是:grpc, grpc-java, grpc-go, 其中 C 版本支持 C, C++, Node.js, Python, Ruby, Objective-C, PHP 和 C# 支持 (1).提供幾乎所有主流語(yǔ)言的實(shí)現(xiàn), 打破語(yǔ)言隔閡 (2). 基于 HTTP/2 標(biāo)準(zhǔn)設(shè)計(jì)

    2024年02月04日
    瀏覽(19)
  • [golang 微服務(wù)] 6. GRPC微服務(wù)集群+Consul集群+grpc-consul-resolver案例演示

    [golang 微服務(wù)] 6. GRPC微服務(wù)集群+Consul集群+grpc-consul-resolver案例演示

    上一節(jié)講解了consul集群: [golang 微服務(wù)] 5. 微服務(wù)服務(wù)發(fā)現(xiàn)介紹,安裝以及consul的使用,Consul集群,這樣的話,當(dāng)一臺(tái)server掛掉之后,集群就會(huì)從另一臺(tái)server中獲取服務(wù),這就保證了客戶端訪問(wèn)consul集群的負(fù)載均衡性. 這里還有一個(gè)問(wèn)題: 就是當(dāng)終端的對(duì)應(yīng)的 微服務(wù)掛掉 了,consul集群se

    2024年02月09日
    瀏覽(21)
  • python - kubernetes中g(shù)rpc服務(wù)健康檢查實(shí)現(xiàn)

    python - kubernetes中g(shù)rpc服務(wù)健康檢查實(shí)現(xiàn)

    概述 kubernetes本身不支持gRPC健康檢查,本文記錄使用 ‘grpc-health-probe’ 實(shí)現(xiàn)grpc服務(wù)的健康檢查 ‘grpc-health-probe’,這是 Kubernetes 原生的健康檢查 gRPC 應(yīng)用程序的方法 官方參考文檔:https://kubernetes.io/zh-cn/blog/2018/10/01/health-checking-grpc-servers-on-kubernetes/ 示例 下載grpc-health-probe文件

    2024年02月09日
    瀏覽(26)
  • 從零開(kāi)始構(gòu)建gRPC的Go服務(wù)

    從零開(kāi)始構(gòu)建gRPC的Go服務(wù)

    Protocol Buffers and gRPC是用于定義通過(guò)網(wǎng)絡(luò)有效通信的微服務(wù)的流行技術(shù)。許多公司在Go中構(gòu)建gRPC微服務(wù),發(fā)布了他們開(kāi)發(fā)的框架,本文將從gRPC入門(mén)開(kāi)始,一步一步構(gòu)建一個(gè)gRPC服務(wù)。 之前在B站看過(guò)一個(gè)gRPC教學(xué)視頻,嘗試跟著視頻做但踩了不少的坑,因此決定自己動(dòng)手從官方教

    2024年04月17日
    瀏覽(21)
  • 【gRPC】go語(yǔ)言實(shí)現(xiàn)gRPC(示例實(shí)踐演示)

    【gRPC】go語(yǔ)言實(shí)現(xiàn)gRPC(示例實(shí)踐演示)

    目錄 1、獲取gRPC和Protobuf依賴 2、安裝protobuf編譯器 3、安裝兩個(gè)插件 ?4、編譯proto文件 5、服務(wù)端 6、客戶端 7、結(jié)果展示 goLand配置 Release Protocol Buffers v21.6 · protocolbuffers/protobuf · GitHub Protocol Buffers - Google\\\'s data interchange format - Release Protocol Buffers v21.6 · protocolbuffers/protobuf https:

    2023年04月09日
    瀏覽(23)
  • 一文搞懂Go gRPC服務(wù)Handler單元測(cè)試

    一文搞懂Go gRPC服務(wù)Handler單元測(cè)試

    在云原生時(shí)代和微服務(wù)架構(gòu)背景下,HTTP和RPC協(xié)議成為服務(wù)間通信和與客戶端交互的兩種主要方式。對(duì)于Go語(yǔ)言而言,標(biāo)準(zhǔn)庫(kù)提供了net/http/httptest包,為開(kāi)發(fā)人員提供了便捷的方式來(lái)構(gòu)建服務(wù)端HTTP Handler單元測(cè)試的測(cè)試腳手架代碼,而無(wú)需真正建立HTTP服務(wù)器,讓開(kāi)發(fā)人員可以聚

    2024年02月04日
    瀏覽(25)
  • 在CSDN學(xué)Golang場(chǎng)景化解決方案(基于grpc的微服務(wù)開(kāi)發(fā)腳手架)

    在Golang基于gRPC的微服務(wù)開(kāi)發(fā)中,可以采用TLS加密通信來(lái)確保服務(wù)與服務(wù)之間的安全通信。下面是一個(gè)簡(jiǎn)單的設(shè)計(jì)示例: 生成證書(shū)和密鑰: 定義gRPC服務(wù)器: 客戶端連接gRPC服務(wù)器: 在服務(wù)實(shí)現(xiàn)中添加TLS加密通信: 這樣,在Golang基于gRPC的微服務(wù)開(kāi)發(fā)中,就可以使用TLS加密通信

    2024年02月14日
    瀏覽(22)
  • Go微服務(wù): 基于net/rpc/jsonrpc模塊實(shí)現(xiàn)微服務(wù)跨語(yǔ)言調(diào)用

    概述 Golang 提供 net/rpc/jsonrpc 庫(kù)來(lái)實(shí)現(xiàn)rpc方法 采用 json 方式進(jìn)行數(shù)據(jù)編解碼,支持跨語(yǔ)言調(diào)用 這里實(shí)現(xiàn)跨語(yǔ)言示例 1 ) go 服務(wù)端 2 ) nodejs 客戶端1 3 ) nodejs 客戶端2 4 ) go 客戶端3 總結(jié) 這里演示了,基于go語(yǔ)言為服務(wù)端,nodejs 和 golang 為客戶端的3種示范 注意,上面 nodejs版本

    2024年03月17日
    瀏覽(19)
  • go-zero/grpc的rpc服務(wù)間傳遞額外數(shù)據(jù)

    go-zero/grpc的rpc服務(wù)間傳遞額外數(shù)據(jù) 2024/02/18 客戶端: 初始化 md 也可如下方式: 追加新的如下: 也可使用 md 的 Set 和 Append 方法追加: 服務(wù)端: 注意 key 都會(huì)被轉(zhuǎn)為小寫(xiě),即使客戶端為大寫(xiě): 而且 key 只能由 數(shù)字、字母和三個(gè)特殊字符“-_.”組成,大寫(xiě)字母會(huì)自動(dòng)被轉(zhuǎn)為小寫(xiě)

    2024年02月19日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包