Co robiłem w B jest ponownie wysłać wiadomość do B w preRestart, patrz poniżej kod.
@Override
public void preRestart(final Throwable reason, final scala.Option<Object> message) throws Exception
{
getSelf().tell(message.get(), getSender());
};
Aby upewnić się, że nie kończy się w nieskończonej pętli, skonfigurować strategię administratora w A w następujący sposób:
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();
}
});
ten powinien gurarantee, że problematyczne jest tylko ponownie wysyłać wiadomość trzy razy. Czy ktoś może mi doradzić, czy to dobra praktyka, czy może połączy mnie z lepszym rozwiązaniem?
Czy ktoś ma dla mnie poradę? – Nextremos