Menjadualkan Kerja Secara Dinamik pada Musim Bunga
Latar Belakang:
Perpustakaan Penjadualan Musim Bunga memudahkan proses penjadualan tugas pada selang masa yang tetap menggunakan anotasi (@Dijadualkan). Walau bagaimanapun, kadangkala ia menjadi perlu untuk melaraskan masa yang dijadualkan secara dinamik tanpa menggunakan semula aplikasi. Ini boleh dicapai menggunakan mekanisme Pencetus.
Menggunakan Pencetus:
Pencetus membolehkan anda mengira masa pelaksanaan seterusnya bagi tugas yang dijadualkan dengan cepat. Pendekatan ini memintas had penggunaan anotasi untuk penjadualan dinamik. Begini cara anda boleh melaksanakannya:
Contoh:
Dalam contoh ini, Pencetus tersuai dicipta untuk menentukan masa pelaksanaan seterusnya secara dinamik berdasarkan nilai harta yang diperoleh daripada persekitaran.
@Configuration @EnableScheduling public class MyAppConfig implements SchedulingConfigurer { @Autowired Environment env; @Bean public MyBean myBean() { return new MyBean(); } @Bean(destroyMethod = "shutdown") public Executor taskExecutor() { return Executors.newScheduledThreadPool(100); } @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.setScheduler(taskExecutor()); taskRegistrar.addTriggerTask( new Runnable() { @Override public void run() { myBean().getSchedule(); } }, new Trigger() { @Override public Date nextExecutionTime(TriggerContext triggerContext) { Calendar nextExecutionTime = new GregorianCalendar(); Date lastActualExecutionTime = triggerContext.lastActualExecutionTime(); nextExecutionTime.setTime(lastActualExecutionTime != null ? lastActualExecutionTime : new Date()); nextExecutionTime.add(Calendar.MILLISECOND, env.getProperty("myRate", Integer.class)); // Obtain value programmatically return nextExecutionTime.getTime(); } } ); } }
Dalam konfigurasi ini:
Dengan menggunakan Pencetus, anda boleh melaraskan secara dinamik masa yang dijadualkan berdasarkan mana-mana logik atau nilai yang tersedia pada masa jalan, memberikan fleksibiliti dan kawalan ke atas penjadualan tugas.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjadualkan Kerja Secara Dinamik pada Musim Bunga Tanpa Menetapkan Semula?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!