playframework - 如何实现Promise对象?

标签 playframework playframework-2.0 akka

我正在尝试将现有应用程序移植到 Play 框架中。该应用程序使用一个库来进行 SMPP 传输,该传输已经以异步方式发送消息的方式实现(在成功传输时调用监听器对象的单独线程中)。我想知道如何使用相同的库并返回一个 Promise 对象,当监听器更新时,该对象将结果返回到 Play 的 Web 请求。

我见过的所有例子都说明了如何使用 play WS 库或 akka 来完成它,它负责在单独的线程上完成工作。如果我已经有了这样的实现,按照我上面的解释,我该如何将它与 Play 集成?

最佳答案

您的 SMPP 传输库会返回一个句柄,您可以在该句柄上注册完成监听器,对吗?在这种情况下,您应该能够创建像这样的桥:

val p = scala.concurrent.Promise[ResultType]()
val handle = smpp.doit() // or whatever the method is called
handle.onComplete(h => p.success(h.result)) // or p.complete if things can fail
return p.future

然后生成的 Future 可用于完成异步 Play 操作。

关于playframework - 如何实现Promise对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15727669/

相关文章:

scala - Play框架2.4国际化和i18n.Messages - Scala

json - 无法使用 "writes"将通用案例类转换为 json

java - Play- 为什么使用逗号将字符串从字符串分割到列表无法正常工作?

scala - akka-http:如何设置响应头

scala - AKKA future 和 Java 线程

scala - Akka log-dead-letters 和 log-dead-letters-during-shutdown 不起作用

java - play framework 2.0 中的 Cron Job

JUnit 断言 play.mvc.Result 内容?

java - CSS 到游戏框架中的 conf/messages

Scala Play Framework Slick session 不起作用