Spring Boot Scheduler flexibel machen

OnDemand

Top Contributor
Hallo Ihr Lieben,

hab ein paar Methoden welche mit @Scheduler(cron= "0 30 4 * * *") annotiert sind. Diese wird 4:30 täglich aufgerufen. Nun möchte ich es dem User überlassen, wann das ausgeführt wird. Hat jemand ne Idee wie ich das dynamisch hinbekomme? Wollte den Cron String in der DB Speichern bzw in einer "Settings Map" welche zum Programmstart initalisiert wird. Allerdings muss der Wert eine Constante sein, könnte es maximal aus der application.properties holen aber auch dann kann der User das zur Laufzeit nicht ändern.

Hat jemand sowas schon mal umgesetzt? Was man noch machen könnte ist eine Methode mit @Scheduler annotieren welche jede Minute aufgerufen wird, aus der DB die hinterlegte Zeit holt und dann damit irgendwie die Methode triggern. Was anderes will mir dazu nicht einfallen
 
Ich weiß nicht wie man das in Spring lösen muss aber rein programmatisch ist das doch überhaupt kein Problem. Du hast einen Task welcher zu einer bestimmten Zeit scheduled wird. Die Zeit dafür steht in der Datenbank (order wo auch immer du deine Usersettings speicherst). Wird nun diese Zeit geädert killst du den task und setzt ihn mit der neuen Schedule Zeit wieder auf. Wo ist jetzt das Problem?
 
http://www.quartz-scheduler.org wäre auch eine Möglichkeit 🙂


Ich weiß nicht wie man das in Spring lösen muss aber rein programmatisch ist das doch überhaupt kein Problem. Du hast einen Task welcher zu einer bestimmten Zeit scheduled wird. Die Zeit dafür steht in der Datenbank (order wo auch immer du deine Usersettings speicherst). Wird nun diese Zeit geädert killst du den task und setzt ihn mit der neuen Schedule Zeit wieder auf. Wo ist jetzt das Problem?
Das Problem ist, dass da ziemlich viel Komplexität drin stecken kann, die man leicht übersieht und/oder schlecht löst, sodass es auf lange Sicht zu Problemen führt.
 

Zurück
Oben