我在尝试Hello示例时遇到了一个问题,这里解释道。
请注意,我刚刚修改了HelloEntity.java文件,使其能够返回"Hello,World!“以外的内容。最确定的是,我的更改需要时间,因此我得到了下面的超时错误。目前,我正在一个节点上尝试(执行PoC)来理解Lagom框架,并且没有部署多个节点的自由。
我也尝试过修改application.conf中的默认拉格姆。断路器“呼叫超时=100”,然而,这似乎没有帮助。
以下是供您参考的确切错误消息:
{“名称”:“akka.pattern.AskTimeoutException:在5000 ms后在akka.pattern.AskTimeoutException上超时。Sendernull发送了\"com.lightbend.lagom.javadsl.persistence.CommandEnvelope\".",“detail”类型的消息:“akka.pattern.AskTimeoutException:在[Actorakka://hello-impl-application/system/sharding/HelloEntity#1074448247]上请求超时在5000 ms之后。发送类型为\"com.lightbend.lagom.javadsl.persistence.CommandEnvelope\".\n\tat akka.pattern.PromiseActorRef$.$anonfun$defaultOnTimeout$1(AskSupport.scala:595)\n\tat akka.pattern.PromiseActorRef$.$anonfun$apply$1(AskSupport.scala:605)\n\tat akka.actor.Scheduler$$anon$4.run(Scheduler.scala:140)\n\tat scala.concurrent.Future$InternalCallbackExecutor$.unbatchedExecute(Future.scala:866)\n\tat scala.concurrent.BatchingExecutor.execute(BatchingExecutor.scala:109)\n\tat scala.concurrent.BatchingExecutor的Sendernull消息scala.concurrent.Future$InternalCallbackExecutor$.execute(Future.scala:864)\n\tat akka.actor.LightArrayRevolverScheduler$TaskHolder.executeTask(LightArrayRevolverScheduler.scala:328)\n\tat akka.actor.LightArrayRevolverScheduler$$anon$4.executeBucket$1(LightArrayRevolverScheduler.scala:279)\n\tat akka.actor.LightArrayRevolverScheduler$$anon$4.nextTick(LightArrayRevolverScheduler.scala:283)\n\tat akka.actor.LightArrayRevolverScheduler$$anon$4.run(LightArrayRevolverScheduler.scala:235)\n\tat .execute$(BatchingExecutor.scala:103)\n\n tat java.lang.Thread.run(Thread.java:748)\n"}
问题:是否有办法通过修改Hello项目中的application.conf或任何java源文件来增加akka超时?你能帮我弄清楚具体的细节吗。提前感谢您的时间和帮助。
发布于 2018-04-05 04:34:09
调用超时是使用lagom.circuit-breaker.default.call-timeout配置的断路器的超时。但这不是上面所述的超时,上面的超时是对您的HelloEntity的请求,超时是使用lagom.persistence.ask-timeout配置的。对实体的请求有超时的原因是因为在多节点环境中,您的实体在节点之间被分割,所以对它们的询问可能会转到另一个节点,这就是为什么在节点没有响应时需要超时。
尽管如此,我并不认为更改ask-timeout会解决您的问题。如果您有一个节点,那么如果一切正常,那么您的实体应该立即响应。
runAll命令)中看到这种情况,还是以其他方式运行Lagom服务?发布于 2018-04-06 04:28:14
谢谢詹姆斯的帮助/指针。将以下行添加到资源/应用程序中。lines对我来说是个窍门:
lagom.persistence.ask-timeout=30s
hello {
..
..
call-timeout = 30s
call-timeout = ${?CIRCUIT_BREAKER_CALL_TIMEOUT}
..
}Call是一种服务到服务的通信.这是一个与远程服务器通信的SeviceClient。它使用断路器。这是一个额外的服务电话.
ask (在lagom.persistence上下文中)是向持久实体发送命令。这发生在您的Lagom服务内部的节点上。它不是用断路。这是一个服务内呼叫。
https://stackoverflow.com/questions/49663773
复制相似问题