[英]Is there any way to schedule a function with parameters in spring boot
我想要一個函數將數據庫/模式的名稱作為輸入,並每 5 分鍾檢查一次數據庫是否處於活動狀態,然后將其記錄在不同的表中。 有點像監控數據庫
我有一個功能說重復
function repeat(String database_name) {
//check database_name can be connected or not
}
當我用@scheduled 注釋它時如何在函數重復(如果不是參數)中傳遞值
對此的一種解決方案是創建一個表示參數的對象,並在 5 分鍾后執行該對象,獲取該對象並使用內部狀態作為參數的表示。 您必須確保每 5 分鍾執行一次 MyEventService 包含對 Event 的引用。 如果沒有對原始帖子的更多輸入,就不可能知道您是如何/何時這樣做的。
如果參數永遠不會改變,那么我建議使服務不可變,並刪除事件類,並僅通過使用 @Value 的屬性提供值。
class Event {
private final String myString;
// constructor, getter
}
@Service
public class MyEventService {
private Event event;
// constructor, setter, getter
}
class MyScheduledTask {
@Autowired
private MyEventService eventService;
@Scheduled(fixedDelay = 300_000)
public void execute() {
Event event = eventService.getEvent();
if (event == null) {
throw new IllegalStateException("No event to process.");
}
// process event
}
}
實際上@Scheduled
需要參數。 使用參數fixedRate
指定以毫秒為單位的間隔:
@Scheduled(fixedRate = 300000)
public void youFunction() {
}
將每 5 分鍾執行一次。
如果您需要在運行時通過方法參數指定間隔,請在此處查看我的答案: 是否可以手動調用彈簧調度方法
您可以使用TaskScheduler
並通過以下方式手動安排任務
taskScheduler.schedule(task1, new PeriodicTrigger(5, TimeUnit.MINUTES));
其中5
也可以是參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.