我们正在使用Akka框架进行进程间通信。几天前QA团队确定了一些陷入困境的请求。对于某些请求,未调用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");
}
答案 0 :(得分:0)
嗯,这不是一个真正的解决方案,但重启模块解决了这个问题。该模块运行了一年。我知道现在这个问题已成为一个非常普遍的问题,但我会将其保留在这里以防万一我们挖掘实际问题并找到解决方案。我会在那种情况下更新。