2016-12-07 47 views
0

如問題的標題所述,我需要設置Spring Scheduler,它將運行方法將數據從數據庫加載到內存中,每天約4AMSpring @計劃每天凌晨4:00到4:30在隨機分鐘開始

事情是,我有這個服務器的多個實例,我不希望所有人都開始同時執行,因爲它會減慢數據庫。所以我想讓時間在凌晨4點到4點之間的任意一分鐘

所以我們可以說一個例子會在每天凌晨4點03分開始,另一個例子在上午4點09分開始,第三天凌晨4:21開始。查詢執行持續1分鐘。

這是可以做到用cron表達式,但沒有使用$ RANDOM慶典(原因我想我沒有它),也許我需要一些其他的方式注入這個隨機值到

@Scheduled(cron="* randomMinuteValue 4 * * *") 
+0

我不會這樣做。爲什麼不在同一時間啓動它們,並根據數據庫連接池中正在使用的連接數來限制它們。 –

+0

我寫的錯誤我有多個服務實例,但我想說服務器實例,因此每個服務器都會嘗試同時連接到數據庫。而我沒有從另一個服務器實例的控制,來扼殺他們。 Sry的錯誤,我寫了:(@EssexBoy – tibortru

+0

你使用什麼數據庫? –

回答

2

使用RandomValuePropertySource from Spring

@Scheduled(cron='0 ${random.int[0,30]} 4 * * ?') 
相關問題