Thrift Oneway是什么?


 

 

網上很多文章,都有各種涉及使用 oneway 的,基本是一個THRIFT IDL示例接口前面加 oneway。看完之后對

oneway的理解還是很模糊,於是看了下Thrift的代碼,終於搞懂了 oneway 。

 

代碼位置: org.apache.thrift.ProcessFunction#isOneway

 

 1 try {
 2             result = this.getResult(iface, args);
 3         } catch (TException var9) {
 4             LOGGER.error("Internal error processing " + this.getMethodName(), var9);
 5             TApplicationException x = new TApplicationException(6, "Internal error processing " + this.getMethodName());
 6             oprot.writeMessageBegin(new TMessage(this.getMethodName(), (byte)3, seqid));
 7             x.write(oprot);
 8             oprot.writeMessageEnd();
 9             oprot.getTransport().flush();
10             return;
11         }
12 
13         if (!this.isOneway()) {
14             oprot.writeMessageBegin(new TMessage(this.getMethodName(), (byte)2, seqid));
15             result.write(oprot);
16             oprot.writeMessageEnd();
17             oprot.getTransport().flush();
18         }

 

原來開啟了 oneway ,一次RPC調用服務端不會返回response 給客戶端,也就相當於客戶端是忽略結果的一次調用。

默認這個 oneway 是false 的,也就是默認都會返回結果,業務上不關心調用結果的接口可以設置為 oneway,可以稍微提升接口性能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM