2015-05-01 26 views

cevap

10

B'de yaptığım şey, preRestart içinde B'ye tekrar mesaj göndermektir, aşağıya bakınız.

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(); 
    } 
    });  

Bu gurarantee gerektiğini sorunlu mesajının yeniden sadece üç kez olduğunu, şu şekildedir:

@Override 
    public void preRestart(final Throwable reason, final scala.Option<Object> message) throws Exception 
    { 
    getSelf().tell(message.get(), getSender()); 
    }; 

ben sonsuz bir döngü içinde bitmez sağlamak için, ben A'da gözetmen stratejisini yapılandırın. Bu iyi bir uygulama ya da daha iyi bir çözüme bağlantı kurarsa, birileri bana bir tavsiyede bulunabilir mi?

+0

İnsanlar iyi söyledi: http://stackoverflow.com/questions/13542921/akka-resending-the-breaking-message – invis

İlgili konular