Akka 主管策略重新启动参与者后如何重新发送消息

Akka 主管策略重新启动参与者后如何重新发送消息,akka,Akka,我有一个父演员(A)和两个子演员(B)。 我在a中制定了一个主管策略,所以如果B中发生特定异常,B将重新启动 如何将导致B中异常的消息再次发送到B?我在B中所做的是在重新启动前将消息再次发送到B,请参见下面的代码 @Override public void preRestart(final Throwable reason, final scala.Option<Object> message) throws Exception { getSelf().tell(

我有一个父演员(A)和两个子演员(B)。 我在a中制定了一个主管策略,所以如果B中发生特定异常,B将重新启动


如何将导致B中异常的消息再次发送到B?

我在B中所做的是在重新启动前将消息再次发送到B,请参见下面的代码

  @Override
  public void preRestart(final Throwable reason, final scala.Option<Object> message) throws Exception
  {
    getSelf().tell(message.get(), getSender());
  };
@覆盖
public void preRestart(最终可丢弃原因、最终scala.Option消息)引发异常
{
getSelf().tell(message.get(),getSender());
};
为了确保我不会以一个无休止的循环结束,我将管理者策略配置为:

  private final SupervisorStrategy strategy = new OneForOneStrategy(3, Duration.Inf(),
      new Function<Throwable, SupervisorStrategy.Directive>()
  {   
    @Override
    public Directive apply(final Throwable t) throws Exception
    {
      if (t instanceof SpecificException)
      {
        return SupervisorStrategy.restart();
      }
      return SupervisorStrategy.escalate();
    }
  });    
private final-SupervisorStrategy strategy=new-OneForOneStrategy(3,Duration.Inf(),
新函数()
{   
@凌驾
公共指令apply(最终可丢弃的t)引发异常
{
if(特定异常的t实例)
{
返回SupervisorStrategy.restart();
}
返回主管策略升级();
}
});    

这应该保证,有问题的消息只会被重新发送三次。如果这是一个好的做法,谁能给我一个建议,或者将我与一个更好的解决方案联系起来?

有人能给我一个建议吗?人们告诉我这很好: