首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行Lagom HelloWorld示例时的HelloWorld

运行Lagom HelloWorld示例时的HelloWorld
EN

Stack Overflow用户
提问于 2018-04-05 03:39:47
回答 2查看 1.9K关注 0票数 0

我在尝试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超时?你能帮我弄清楚具体的细节吗。提前感谢您的时间和帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-05 04:34:09

调用超时是使用lagom.circuit-breaker.default.call-timeout配置的断路器的超时。但这不是上面所述的超时,上面的超时是对您的HelloEntity的请求,超时是使用lagom.persistence.ask-timeout配置的。对实体的请求有超时的原因是因为在多节点环境中,您的实体在节点之间被分割,所以对它们的询问可能会转到另一个节点,这就是为什么在节点没有响应时需要超时。

尽管如此,我并不认为更改ask-timeout会解决您的问题。如果您有一个节点,那么如果一切正常,那么您的实体应该立即响应。

  • 这是你在日志中看到的唯一错误吗?
  • 您是在devmode (即使用runAll命令)中看到这种情况,还是以其他方式运行Lagom服务?
  • 你的数据库有反应吗?
票数 0
EN

Stack Overflow用户

发布于 2018-04-06 04:28:14

谢谢詹姆斯的帮助/指针。将以下行添加到资源/应用程序中。lines对我来说是个窍门:

代码语言:javascript
复制
lagom.persistence.ask-timeout=30s
hello {
..
..
    call-timeout = 30s
    call-timeout = ${?CIRCUIT_BREAKER_CALL_TIMEOUT}
..
}

Call是一种服务到服务的通信.这是一个与远程服务器通信的SeviceClient。它使用断路器。这是一个额外的服务电话.

ask (在lagom.persistence上下文中)是向持久实体发送命令。这发生在您的Lagom服务内部的节点上。它不是用断路。这是一个服务内呼叫。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49663773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档