我正在尝试将现有应用程序移植到 Play 框架中。该应用程序使用一个库来执行 SMPP 传输,该库已经以异步方式发送消息的方式实现(在成功传输时调用侦听器对象的单独线程中)。我想知道如何使用相同的库并返回一个 Promise 对象,该对象在更新侦听器时将结果返回给 Play 的 Web 请求。
我看到的所有示例都说明了它是如何使用 play WS 库或 akka 完成的,它负责在单独的线程上完成工作。如果我已经有这样的实现,如上所述,我如何将它与 Play 集成?
我正在尝试将现有应用程序移植到 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 可用于完成 Async Play 操作。