2014-12-12 2 views
1

Это как обратный вызов назначается для отказаВ Akka, как вы знаете, какой запрос был приурочен?

future.onFailure(new FailureHandler(), context().system().dispatcher()); 

В методе FailureHandler()

public final class FailureHandler extends OnFailure { 
    public void onFailure(Throwable throwable) throws Throwable { 
      System.out.println(throwable.toString()); 
    } 
} 

Я не могу понять способ, чтобы выяснить, какой запрос не удалось. Это обычное требование, и я считаю, что мне не хватает чего-то тривиального.

+1

запрос, который не смог это тот, который привел к вам получить, что 'Future', вероятно, через' ask'. Если ваш обработчик отказов является частью общего кода, то при его создании поставьте его с большим контекстом (например, каким был запрос). – cmbaxter

ответ

1

Это было тривиальным на самом деле, нужно объявить переменную уровня класса для хранения TransactionID OnFailure

public final class FailureHandler extends OnFailure { 
    String transactionId; 
    public FailureHandler(String transactionId){ 
     this.transactionId = transactionId; 
    } 
    @Override 
    public void onFailure(Throwable throwable) throws Throwable { 
     logger.error(transactionId + " failed"); 
    } 
} 
Смежные вопросы