Akka中Ask超时的默认值是多少?
在Akka中使用ask方法所需的一切就是导入akka.pattern.ask。在文档中,有一些ask的例子,其中没有直接提供超时或作为隐式瓦尔提供超时。
https://doc.akka.io/docs/akka/2.5/actors.html
我已经阅读了ask myself的源代码,但找不到为超时提供的默认值。但是,ask方法即使在没有提供超时时也能正常工作,这意味着在某些地方使用了默认值。
这个默认值是什么,它是如何提供的?
Akka中Ask超时的默认值是多少?
在Akka中使用ask方法所需的一切就是导入akka.pattern.ask。在文档中,有一些ask的例子,其中没有直接提供超时或作为隐式瓦尔提供超时。
https://doc.akka.io/docs/akka/2.5/actors.html
我已经阅读了ask myself的源代码,但找不到为超时提供的默认值。但是,ask方法即使在没有提供超时时也能正常工作,这意味着在某些地方使用了默认值。
这个默认值是什么,它是如何提供的?
2条答案
按热度按时间sqyvllje1#
没有默认超时。必须通过手动传入或使用隐式val来提供特定的超时值来请求。在第二种情况下,隐式瓦尔可能不一定出现在使用ask的同一个文件中,这取决于ask在被调用时可以看到的其他名称空间。
我从Akka Cookbook中复制了一些代码,如下所示
如果没有提供的超时值,代码将无法编译。
发生的事情是,我正在工作中查看一些代码,这些代码似乎没有在调用ask的同一个文件中提供超时。在调用我的文件的较大名称空间中,超时显示为隐式瓦尔。因此必须提供超时,但根据代码库的不同,超时可能不在调用ask的同一个文件中。我通过在代码库中搜索akka.util.Timeout类的所有用法,找到了超时出现的位置。
gab6jxml2#
如果你看一下
akka.pattern.AskableActorRef
类,你会发现ask方法有一个隐式的Timeout
参数。这意味着必须在某处隐式定义Timeout
示例,或者显式传递。否则就不会成功。在您的例子中,
Timeout
很可能是通过隐式查找解决的。尝试使用隐式查找法则来查找示例。Implicit lookup