使用
Akka 时,使用 NotInfluenceReceiveTimeout
注释消息意味着收到此消息不会重置之前设置的任何超时(使用 setReceiveTimeout
(。但是,如果收到这样的消息,并且我们在处理消息时触发了setReceiveTimeout
调用,是否会忽略此调用,从而导致未设置超时?
No.
- 接收超时逻辑是使用在指定超时后发送的计划
ReceiveTimeout
消息实现的 -
每当参与者收到消息时,都会检查其
NotInfluenceReceiveTimeout
标记- 如果消息不带有
NotInfluenceReceiveTimeout
标记,则取消计划的ReceiveTimeout
,并重新安排新的 - 否则,计划的消息保持不变
- 如果消息不带有
- 然后处理消息 - 无论
NotInfluenceReceiveTimeout
标记如何。如果在此处调用setReceiveTimeout
,即使对于NotInfluenceReceiveTimeout
消息,它也将有效。
查看源代码(此处和此处(以获取更多信息。