gpt4 book ai didi

java - Play Framework适合异步后台处理吗?

转载 作者:行者123 更新时间:2023-11-29 03:28:12 24 4
gpt4 key购买 nike

我将构建一个用于托管城市游戏的 Web 应用程序。

用户访问我的网站,点击“开始游戏”,然后在到达某个位置时开始接收一些短信,必须回复短信才能获得积分。

Play适合这种应用吗?单击“开始游戏”按钮后,一些逻辑必须按照自己的路线进行。我将如何处理并行检查玩家的地理位置(我有 API)?我想每 ~5 秒对 Play 器执行一次 ping 操作。并做一些逻辑。用户当然必须能够在处理他的位置、分配点、发送和接收消息等的同时使用网络应用程序。

所以总结一下:我想要一个用 Play 编写的应用程序,它在单击“开始游戏”后为游戏启动一个单独的线程,并且其他用户能够查看他们的数据(统计等),同时线程按自己的方式工作与游戏逻辑。

我找到了类似 jobs 的内容但它们是为 1.2 版记录的。经过一番阅读后发现 Akka是现在推荐的,但是它使用了和 actor 模型。

Play + Akka 是否适合我的项目?

最佳答案

当然。使用 Play Framework 在单独的 ThreadPool(也称为 ExecutionContext)中设置计算非常容易。您可能想阅读 documentation here ,但简而言之,您会希望在您的 Application.scala Controller 文件中执行类似的操作(注意此示例使用 Scala):

  // Async Action that's triggered when a user clicks "Start Game".
// Runs logic in separate gameLogicContext thread pool and asynchronously returns a response without blocking of Play's default thread pool.
def startGame = Action.async { implicit request =>

Future {

// ... your game logic here. This will be run in gameLogicContext

Ok("Game started in separate thread pool") // http response

}(Contexts.gameLogicContext) // the thread pool the future should run in.

}

然后您将在您的 application.conf 文件中设置一个单独的 gameLogicContext 线程池:

play {
akka {
actor {
game-logic-context = {
fork-join-executor {
parallelism-min = 300
parallelism-max = 300 // thread pool with 300 threads
}
}
}
}
}

关于java - Play Framework适合异步后台处理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19878235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com