akka future onsuccess onfailure都没有执行
问题描述:
我们使用Akka框架进行进程间通信。几天前,QA团队发现了一些陷入僵局的请求。对于某些请求,不调用onSuccess()和onFailure()回调方法。日志的最后一行显示为akka future onsuccess onfailure都没有执行
"Charging Customer."
并且该特定事务的流程停在那里。下一个日志应该是
"Charging response or Charging Failed"
这种行为的原因是什么?这可能是由于调度员被堵塞?我们正在使用默认的调度程序。
代码
log.debug("Charging Customer");
Future future = Patterns.ask(actorSelection, new Gson().toJson(request), timeout);
future.onSuccess(new onChargingSuccess<>(ccRequest), context().system().dispatcher());
future.onFailure(new onFailureHandler(ccRequest), context().system().dispatcher());
private class onChargingSuccess<T> extends OnSuccess<T> {
@Override
public void onSuccess(T t) throws Throwable {
log.debug("Charging response:" + t.toString());
}
private class onFailureHandler extends OnFailure {
@Override
public void onFailure(Throwable thrwbl) throws Throwable {
log.info("Charging Failed");
}
答
那么它不是一个真正的解决方案,但在重新启动解决了该问题的模块。该模块运行了一年。我知道现在这使得它成为一个非常普遍的问题,但我会把它留在这里,以防万一我们挖掘实际问题并找到解决方案。我会在这种情况下更新。
'timeout'有多长?你有没有证实日志输出是可见的? –
超时时间为15秒。记录超时请求。日志输出在文件中可见。 –