2017-02-16 99 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

這就是我要做的......索引交易狀態和時間,所以它將是一個毫不費力的查詢。 –

相關問題