2012-12-13 22 views
7

Yaylı zamanlayıcı çalışmasını iptal etmem ya da en azından yürütme sıklığını bazı koşullara bağlı olarak değiştirmem gerekiyor. Hem org.springframework.scheduling.quartz.SimpleTriggerBean hem de org.springframework.scheduling.timer.ScheduledTimerTask kullanıyordu. Nasıl yapılacağını bulamıyor.Yay zamanlayıcı yürütme işlemi nasıl iptal edilir

cevap

0

Bu, en iyi çözüm değildir, ancak başka bir şeyle gelemezseniz, her zaman olayın tetiklendiği her seferinde kontrol edilecek bir boolean kullanabilir ve eğer boole yanlışsa, timertask hemen sonlandırılmalıdır.

+0

Aslında böyle yaptım. Bu yaklaşım kesinlikle tercih edilmez çünkü bazı şartlar yerine getirildiğinde tekrar görev yapmak istemiyorum. – BigWonder

14

NOT: Bu Bahar 3.0+

  1. Oku Spring documentation on scheduling tasks içindir

  2. böyle TimerManagerTaskScheduler veya ThreadPoolTaskScheduler bir şekilde, bir TaskScheduler hizmeti kullanın. Bazı TaskScheduler.schedule*() yöntemini arayıp dönen ScheduledFuture depolamak tarafından görev

  3. Zamanlama. Yürütmeyi iptal etmek istediğinizde, ScheduledFuture.cancel() numaralı telefonu çağırınız. Bu senin görevin daha fazla çağrılmasını durduracaktır. Şu anda göreviniz için farklı parametrelerle TaskScheduler.schedule*()'u arayarak yeniden zamanlayabilirsiniz.

+0

Fasulyelerim bahar xml dosyasında sağlanır. TaskScheduler örneğini buradan nasıl alabilirim? Hepsini Java kodumda sağlamlaştırmam gerektiğini mi söylüyorsun? – BigWonder

+0

TaskScheduler'ı bir '' öğesini kullanarak başlatın ve onu kullanmak istediğiniz yere enjekte edin – gpeche

+0

Önerilen çözüm uygulaması: https://stackoverflow.com/questions/39152599/ –

0

çözüm org.springframework.scheduling.timer.TimerFactoryBean bir kimlik atayın ve sonra uygulamadan bu fasulye almak, Zamanlayıcı için döküm ve o nesne üzerinde yöntemini iptal aramak.

+0

' Daha sonra myScheduler ve 'cancel()' işlevlerini kullanabilirsiniz. – Andre

İlgili konular