oneway的理解還是很模糊,于是看了下Thrift的代碼,終于搞懂了 oneway 。
創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設計、成都網(wǎng)站建設、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務綠園,十載網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18980820575代碼位置: 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調(diào)用服務端不會返回response 給客戶端,也就相當于客戶端是忽略結(jié)果的一次調(diào)用。
默認這個 oneway 是false 的,也就是默認都會返回結(jié)果,業(yè)務上不關心調(diào)用結(jié)果的接口可以設置為 oneway,可以稍微提升接口性能。