2017-02-16 80 views
0

我正在使用spring启动将应用程序模块集成到我们的应用程序中。我遇到了用户在事务期间关闭浏览器的边缘情况之一。在Spring启动时只执行一次触发器/任务,并在运行期间取消注册任务

当用户关闭浏览器时,我需要更新状态为失败的事务表。但不幸的是,我不能作为商家网站的网址。所以当一个条目进入事务表(Hibernate)时,我想写一个触发器(使用Spring引导)。

如果用户在进行付款时关闭浏览器,触发器应在超时后(约30分钟)更新事务状态。

如果交易是成功的失败,那么我不想执行触发器。

我无法弄清楚如何在Spring-boot中做到这一点,所以我使用普通的Java timerTask,它将在30分钟后执行一次。使用弹簧引导有更好的方法吗?

new java.util.Timer().schedule( 
      new java.util.TimerTask() { 
       @Override 
       public void run() { 
        LOGGER.info("Trigger for Transaction id "+transactionId); 
       } 
      }, 
      1000 * 60 * 30 // 30 mins 
    ); 

回答

0

我在想你可能会从错误的角度来处理这个问题。 您正在考虑关闭是交易的问题。

为什么不考虑作为一个整体的摇摆交易?有一份工作,每分钟运行一次,并关闭过长的交易?

这样,您可以确保全部交易在一定的时间内结束。

+0

因此,每一分钟的工作都会碰到数据库,检查交易状态是否为空,交易时间> 30分钟 –

+0

这就是我要做的......索引交易状态和时间,所以它将是一个毫不费力的查询。 –

相关问题