我看到了github中的示例動態觸發器,它使用固定速率/延遲,但它可以實現動態觸發器與cron表達式,其中一旦工作完成與自定義退出代碼,我們希望cron表達方式,使其不再輪詢當天或改變cron expressin從不同時間開始輪詢。春季集成動態觸發器與cron表達式
1
A
回答
0
不幸的是org.springframework.scheduling.support.CronTrigger
使用final
字段,所以我們不能在運行時改變它的狀態。因此,任何想法尋求如何改變價值的方式都是浪費時間。
從其他讓我們來看看這只是一個time producer
解決方案來通知調度程序何時開始提供的任務。
換句話說這裏是一個Trigger
合約代碼:
public interface Trigger {
Date nextExecutionTime(TriggerContext triggerContext);
}
那麼,我們的解決方案必須提供的僅僅只有返回特定Date
每個nextExecutionTime
調用。
只有你需要在這裏做的是dynamic trigger
實施,它符合你的要求。
正確的,這可能會有點難以達到的cron相似的行爲,但對你沒有選擇現在...
雖然可以stop()
你的任務後適配器,注入新的CronTrigger
到它和start()
它再次。
0
您可以編寫一個自定義觸發器,該觸發器可簡單包裝CronTrigger
,您可以隨意替換代理CronTrigger
。
但是,Trigger
機制的限制是您無法更改現有計劃。
如果您正在輪詢線程上運行您的工作,那麼您可以在輪詢線程返回之前更改觸發器(並調用觸發器以查找下一個執行時間)。
彈簧整合4.2(目前在里程碑2)有conditional pollers這將使這樣的事情更容易一些。
相關問題
- 1. 春季集成+ cron +石英集羣?
- 2. 春季啓動cron表達式調度,調用onApplicationEvent的ApplicationListener
- 3. 春季cron表達每天兩次
- 4. 春季與RabbitMQ的集成
- 5. 春季啓動JSF集成
- 6. 春季集成上傳與動態FTP屬性
- 7. 春季cron作業表達式幫助我理解
- 8. 春季集成 - JMS
- 9. 如何在春季動態調用服務激活器集成
- 10. Zabbix API觸發器表達式與減少的觸發器表達式
- 11. 春季集成:問題與故障ChannelChannel
- 12. 與HazelCast的春季批次集成
- 13. 春季集成:自定義分配器與頭富集
- 14. 春季啓動集成測試
- 15. 春季啓動BlazeDS容易集成
- 16. 春季集成DSL變壓器
- 17. 春季論壇集成
- 18. Struts2的春季JDBC集成
- 19. 春季集成FTP Java DSL
- 20. 春季集成 - 多網關
- 21. 如何在春季配置文件中不觸及#{}表達式?
- 22. 每個N小時/天/周/月執行cron觸發器的Quartz cron表達式
- 23. 春季集成從動態多個目錄中讀取文件
- 24. 以編程方式與春季NUnit集成
- 25. 更好的方式與春季動態形式?
- 26. 春季集成 - 使用IntegrationManagementConfigurer與服務激活器
- 27. 春季日程安排 - 每天午夜不工作的Cron表達式?
- 28. 春季動態列表屬性
- 29. 春季集成:MQSeries消息驅動的適配器不工作
- 30. 動態模型在春季
但是,如果您停止使用控制總線的adapater,它將如何啓動第二天而不通過其他一些應用程序調用。我們所需要的是,讓第一天,如果工作成功完成,然後使用動態觸發器更改下一個計劃時間,以這種方式進入第二天。所以我相信擴展DynamicTrigger是正確的方法,只是重寫nextscheduledTime方法。 – user509755