我使用spring boot在我们的应用程序中集成支付模块。我遇到了一个边缘情况,用户在交易过程中关闭了浏览器。
当用户关闭浏览器时,我需要更新状态失败的事务表。但不幸的是,我不能将其作为商家网站的网址。所以当一个条目进入事务表(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)
我想你可能会从错误的角度来看待这个问题。 你正在考虑让收盘成为交易的问题。
为什么不考虑整体悬空交易?有一份工作,每分钟运行一次,并关闭过长的交易吗?
这样,您可以确保所有交易在一定时间内结束。