【问题标题】:Background task or Async Task in user session Spring MVC用户会话 Spring MVC 中的后台任务或异步任务
【发布时间】:2014-12-22 19:54:39
【问题描述】:

如何在用户会话中实现后台任务,以检查用户是否取得任何进展?当用户耗时过长时,可以释放预留的资源。

要求是当用户选择预留时,为该用户预留资源,服务器现在正在等待下一个请求继续进行。

如果用户在接下来的 60 秒内没有点击继续,服务器应该会自动释放保留的资源。

【问题讨论】:

    标签: java spring spring-mvc task


    【解决方案1】:

    您可以使用java.util.Timer, java.util.TimerTask 来安排和执行取消。另一个流行的调度库是quartz。但这可能有点矫枉过正。

    解决此问题的另一种方法是创建一个客户端计时器任务,该任务在一段时间内没有用户交互时调用服务器“取消”功能。即使这样,当用户通过关闭浏览器来孤立会话时,您也必须有一个服务器进程来清理资源。

    您也可以考虑使用session timeout

    【讨论】:

      【解决方案2】:

      好的,所以我想出了如何实施解决方案。

      这是我遵循的步骤

      1. 当收到初始请求并且在发送响应之前没问题时,在不同的表中创建一个条目,其中包含“条目时间”和“事务 ID”(事务 ID 在资源保留时创建,并将用于所有后续请求” )。
      2. 收到“proceedWithReservaration”时删除此记录。
      3. 创建一个调度程序来检查这个表,找出超过 60 秒的“TransactionID”。
      4. 创建一个异步任务来发送“releaseNotification”请求,以便我们可以并行处理“Release”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-31
        • 2016-03-02
        • 2018-12-26
        相关资源
        最近更新 更多