我有一個java項目打包成一個jar和運行。代碼與2個數據庫,主數據庫和輔助數據庫進行交互。表X存在於具有相同結構的主DB和輔DB中。清理線程/後臺線程或過程/服務在Java
代碼中的Java線程使用鏈接的阻塞隊列,並且添加到主隊列中的表X上運行的每個DML查詢的此隊列中。線程繼續檢查隊列是否添加了新的DML查詢對象,並在輔助數據庫上執行相同操作。
一天結束時,需要刪除表X中給定日期的所有行,但在此之前,我們需要在兩個數據庫中調整表X,並且在行數不匹配的情況下,首先將缺少的行插入到次級DB,然後從主數據庫中刪除。
這裏我面臨兩個問題:
第一個問題是,作爲添加到所述隊列的增加DML查詢的數量,這些查詢的執行速度變慢。
其次,如果jar停止並再次重新啓動,添加到隊列中但尚未執行的DML查詢會因爲隊列在內存中而丟失,因此這些行永遠不會移動到輔助數據庫。
我在尋找的是一種方法,我可以設計一個後臺服務或一個外部服務,它可以獨立於主jar運行還是停止運行,並且可以繼續執行復制DML查詢的工作從主數據庫到輔助數據庫。
像Linux或Windows上的'cron''Task Scheduler'? –