当前位置: 首页 > 知识库问答 >
问题:

未来复苏的Akka Ask模式

微生自怡
2023-03-14

我在写一个小服务器。一篇博文特别推荐了这种提问模式。CapserOk课程具有以下特点:

案例类CasperOk(公司:选项[company.company],existOrNot:Boolean)

我正在检索这个数据库行,如果它不存在或发生了一些错误,我想从Spray发送一个响应来告诉客户端。

然而,使用这种模式,我不知道在哪里注入开关。

我试着把代码改成这样:

   val response = (secCompanyActor ? jObjectFromCasper(company))
                .mapTo[CasperOk]
                .map(result => result.succeedOrNot match {
                  case true => (OK, "transaction successful")
                  case false => (Conflict, "FileLoc format is wrong or it already exists")
                })
                .recover{case _ => (InternalServerError, "error occured! We will fix this")}

    complete(response)

Spray使用complete()发送HTTP响应complete()可以接受两个对象,也可以接受一个字符串/可序列化对象。我想使用双对象模式(它允许我手动编码它的标题),理想的情况应该是complete(response.\u 1,response.\u 2)

有没有办法让阿克卡的未来实现这一点?

共有1个答案

鲍鸿波
2023-03-14

您可以通过在未来的onComplete方法中注册一个对complete函数的调用来实现这一点。

response.onComplete {
  case (statusCode, message) => complete(statusCode, message)
}
 类似资料:
  • 我很好奇递归构建Akka期货链的最佳方式,它将按顺序运行,如果未来的< code>doWork调用失败,未来将重试3次,如果重试次数用完,链将失败。假设所有< code>doWork调用都通过,则返回的futChain应该只完成。 < li >如何将结果作为集合获取?即,在本例中,从< code>doWork函数返回的每个< code>String(我需要以某种方式修改< code>recurse

  • JavaScript未来的模块化会是什么样子?这很难讲。如前所说,ES6已经开始起草这一块的标准,而AMD,CommonJS已经流行起来。通常,标准的制定,都是在有了实现的前提之下。不管怎样,我们先来展望一二吧。

  • 在单独的线程上执行任务(使用线程池)并提供回调函数。假设我在中有一个API调用。那是API调用阻塞吗?线程会被阻塞,直到它没有得到API的响应吗?(我知道主线程/tomcat线程将是非阻塞的,但是CompletableFuture任务正在执行的线程呢?) 据我所知,单声道是完全无阻塞的。 请阐明这一点,如果我错了,请纠正我。

  • 问题内容: 信封:Akka 2.1,scala版本2.10.M6,JDK 1.7,u5 现在是我的问题:我有: 现在在第一行中,我有一个Future对象的Future,有什么方法可以在不阻塞当前线程的情况下将其转换为Future? Akka有什么方法吗?据我检查,我还没有发现…第一次发帖....不好意思的格式和组织…:〜P 问题答案: 简短答案(英语):flatMap dat sh!t 较短的答案

  • 好吧,我想问题已经在标题中完成了。没什么大不了的,但我只是想知道。我有一个返回正确值或错误代码枚举项的方法。例如这样的东西: 其中返回一个Future,而只是修改数据。 现在我已经直观地编写了< code>Future[_],因为返回值是灵活的。但是在查看其他库时,我看到了< code>Future[Any]的用法。当你在函数的返回中使用匹配用例来检查它是什么数据时,这似乎也是合乎逻辑的。 例如,

  • Scala使用什么模式来处理这种情况: 你有很多未来(它们可以是任何东西,但为了举例…) 你有一个返回未来的函数 我想做这样的事情: 我想返回一个值,但是我在rent语句中调用foF,我会得到一个