十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
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調(diào)用服務(wù)端不會返回response 給客戶端,也就相當(dāng)于客戶端是忽略結(jié)果的一次調(diào)用。
默認(rèn)這個 oneway 是false 的,也就是默認(rèn)都會返回結(jié)果,業(yè)務(wù)上不關(guān)心調(diào)用結(jié)果的接口可以設(shè)置為 oneway,可以稍微提升接口性能。