iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
自我挑戰組

gRPC通訊框架認識與實作系列 第 17

gRPC通訊框架認識與實作【Day 17】

  • 分享至 

  • xImage
  •  

認識完樣板程式後我們要來使用樣板程式來實作非同步傳輸的部分,我們server一樣是使用Client2Servers這個method來接收,但是我們Client要寫一組新的,請一樣在gRPC的Client資料夾新增一個Client04。

最一開始一樣寫上

//設計好連線資訊
String host = "localhost";
int port = 5000;
//通訊管道建立
ManagedChannel managedChannel = ManagedChannelBuilder.forAddress(host,port).usePlaintext().build();

//判斷是否有連線成功
if (managedChannel != null && !managedChannel.isShutdown())
    System.out.println(" channel build success !! " + host + ":" + port);

再來我們要開始做出變動,首先是連線函數的部分要改成使用newStrb()

IronManServiceGrpc.IronManServiceStub ironManServiceStub = IronManServiceGrpc.newStub(managedChannel);

如果不清楚的話可以參考這裡複習一下
接下來一樣設定request

IronManProto.IronManRequest01.Builder builder = IronManProto.IronManRequest01.newBuilder();
builder.setName("Bob");
builder.setAge(String.valueOf(28));
IronManProto.IronManRequest01 ironManRequest01 = builder.build();
//因為是採用非同步的方式傳遞,client2servers()不會只傳入一個參數
//第一個參數是request 第二個參數是response
ironManServiceStub.client2Servers(ironManRequest01, 第二個參數);

設定requset資料的方式沒有改變,最主要改變的是當我們調用連線物件ironManServiceStub時,以前只會傳入一個變數,但是現在要傳入的不只一個變數。
我們可以回頭看看client03:

Iterator<IronManProto.IronManResponse01> ironManResponse01Iterator = ironManServiceBlockingStub.client2Servers(ironManRequest01);

在client03中的client2Sservers(),我們只傳入一個參數(ironManRequest01),而在client04則要傳入兩個參數,第一個一樣是ironManRequest01,第二個則是我們的監聽模板,這是最大的不同處,監聽模板的部分我們明天會再做更深入的說明與實作。


上一篇
gRPC通訊框架認識與實作【Day 16】
下一篇
gRPC通訊框架認識與實作【Day 18】
系列文
gRPC通訊框架認識與實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言