作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
请告诉我,声明两种方法有什么不同
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.
oneway
?
最佳答案
你最后的假设是正确的!
报价 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/
我是一名优秀的程序员,十分优秀!