2727import org .javawebstack .orm .wrapper .MySQL ;
2828import org .javawebstack .orm .wrapper .SQL ;
2929import org .javawebstack .orm .wrapper .SQLite ;
30+ import org .javawebstack .scheduler .job .JobQueue ;
31+ import org .javawebstack .scheduler .job .JobWorker ;
32+ import org .javawebstack .scheduler .job .local .LocalJobQueue ;
33+ import org .javawebstack .scheduler .job .redis .RedisJobQueue ;
34+ import org .javawebstack .scheduler .job .sql .SQLJobQueue ;
35+ import org .javawebstack .scheduler .scheduler .Schedule ;
36+ import org .javawebstack .scheduler .scheduler .Scheduler ;
37+ import org .javawebstack .scheduler .scheduler .local .LocalSchedule ;
38+ import org .javawebstack .scheduler .scheduler .redis .RedisSchedule ;
39+ import org .javawebstack .scheduler .scheduler .sql .SQLSchedule ;
40+ import redis .clients .jedis .Jedis ;
3041
3142import java .io .IOException ;
3243import java .util .*;
@@ -46,6 +57,8 @@ public abstract class WebApplication {
4657 private final CommandSystem commandSystem = new CommandSystem ();
4758 private final Map <String , Seeder > seeders = new HashMap <>();
4859 private final I18N translation = new I18N ();
60+ private JobQueue jobQueue ;
61+ private Schedule schedule ;
4962
5063 public WebApplication () {
5164 injector = new SimpleInjector ();
@@ -96,6 +109,26 @@ public WebApplication() {
96109 setupInjection (injector );
97110 modules .forEach (m -> m .setupInjection (this , injector ));
98111
112+ switch (config .get ("schedule.driver" )) {
113+ case "DATABASE" :
114+ jobQueue = new SQLJobQueue (sql , config .get ("schedule.jobs.name" , "default" ));
115+ schedule = new SQLSchedule (sql , config .get ("schedule.jobs.name" , "default" ));
116+ break ;
117+ case "REDIS" :
118+ jobQueue = new RedisJobQueue (new Jedis (config .get ("redis.host" , "localhost" ), config .getInt ("redis.port" , 6379 )), config .get ("schedule.jobs.name" , "default" ));
119+ schedule = new RedisSchedule (new Jedis (config .get ("redis.host" , "localhost" ), config .getInt ("redis.port" , 6379 )), config .get ("schedule.jobs.name" , "default" ));
120+ break ;
121+ case "LOCAL" :
122+ default :
123+ jobQueue = new LocalJobQueue ();
124+ schedule = new LocalSchedule ();
125+ break ;
126+ }
127+
128+
129+ injector .setInstance (JobQueue .class , jobQueue );
130+ injector .setInstance (Schedule .class , schedule );
131+
99132 server = new HTTPServer ()
100133 .port (config .getInt ("http.server.port" , 80 ));
101134 injector .setInstance (HTTPServer .class , server );
0 commit comments