gpt4 book ai didi

thrift - 单程服务方式

转载 作者:行者123 更新时间:2023-12-04 19:39:47 26 4
gpt4 key购买 nike

请告诉我,声明两种方法有什么不同

service MyService {
void test1();
oneway void test2();
}

手册说

The oneway modifier indicates that the client only makes a request and does not wait for any response at all. Oneway methods MUST be void.



但是任何 void 方法都表示客户不期望任何结果。那为什么 oneway ?

或者不同的是,普通方法是同步执行的,客户端在服务端测试完方法后才返回,而oneway被拉了忘记了?因此,从单向不能出现异常(exception)

最佳答案

你最后的假设是正确的!

报价 The Programmer's Guide to Apache Thrift :

“单向函数与普通函数的不同之处在于调用普通函数,例如“void myFunc(1: i16 val);”总是导致来自服务器的响应消息。这在 void 函数的上下文中可能看起来很奇怪,但是,虽然 void 函数在应用程序级别不返回任何内容,但处理器确实将 RPC 响应发送回客户端代理。此响应到达客户端代理从同步接口(interface)中用户代码的调用返回。此同步的一个原因是任何正常函数都可能抛出异常,甚至是无效函数。用户代码必须等待服务器响应知道该函数,甚至是一个 void 函数,成功完成。

因为 oneway 函数不接收任何类型的响应,所以 oneway 函数调用者不可能知道调用何时或是否完成。在客户端需要通知服务器的情况下,不考虑结果,单向是一个不错的选择。 Onway 函数可以像任何其他函数一样具有参数,但应该声明为 void(IDL 编译器会警告非 void 单向返回类型,并且永远不会向单向调用的客户端返回任何内容)。”

关于thrift - 单程服务方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48284544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com