Akka 主管策略重新启动参与者后如何重新发送消息
我有一个父演员(A)和两个子演员(B)。 我在a中制定了一个主管策略,所以如果B中发生特定异常,B将重新启动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(
如何将导致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();
}
返回主管策略升级();
}
});
这应该保证,有问题的消息只会被重新发送三次。如果这是一个好的做法,谁能给我一个建议,或者将我与一个更好的解决方案联系起来?有人能给我一个建议吗?人们告诉我这很好: