akka setReceiveTimeout如何在池中的执行元上下文中工作?

cu6pst1q  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(175)

我正在研究一些逻辑,其中包括关闭空闲的参与者。但是这些参与者是池参与者,这意味着ReceiveTimeout消息被发送到池中的所有参与者。
我遇到的问题是,如果我在池中有5个参与者,当池接收到消息时,只有其中一个的超时重置。其余4个,因为他们没有接收到消息,仍然在原来的TimeOut时钟上,这对每个框架来说是有意义的。但对于我的用例,我希望它是这样的,如果池中的一个参与者接收到消息,所有的超时都被重置了。2我该怎么做呢?3我想到的一个简单的方法是,一旦池中的一个参与者接收到消息,它就向池中的其他参与者发送一个心跳。4但是我不确定如何在Akka中实现这一点。
我的演员是这样开始的-

  1. Props.create(ActorA.class, () -> new ActorA()).withRouter(new SmallestMailboxPool(poolSize));
slmsl1lt

slmsl1lt1#

我假设你所说的池化参与者是指具有池特征的路由器?假设是这样,请查看文档中特殊处理的消息处理部分下的广播消息。
在路由器上设置receiveTimeout,然后针对路由器中的超时向处理程序中的工作线程发送广播消息。

相关问题