启动数万个Quartz作业

时间:2016-11-03 10:50:01

标签: java quartz-scheduler crontab

我是Quartz的新手,我需要每10秒启动数万个作业。

可能吗?如果是的话,我该怎么做?是否有特定配置或任何建议?

修改

我正在提供有关我的问题的更多信息:

我的平台定位了大约1000个用户。每个用户最多可以有10个仪表板。每个仪表板都与托管在单独服务器上的文本文件相关。这些文本文件可以由我可能无法控制的其他应用程序更新。用户可以配置其仪表板的更新频率。允许的最小值为10秒。

要解决此问题,我认为我们应该为每个仪表板创建一个作业/线程/进程/工作者(称之为你想要的:))并配置“作业”以每x秒读取相关的文本文件如果检测到更改,请更新仪表板。

因此,在最坏的情况下,我的解决方案应该每10秒支持10000个“作业”。

技术环境是:

  • Ubuntu 14.04服务器版
  • RAM:6G RAM
  • CPU:4x2 Ghz
  • JavaEE,Spring和cxf

我已经尝试过Java Quartz调度程序,但是在调用Web服务时遇到了像HeapSpace和沉重的问题。这是My Quartz配置:

创建工作:

job = JobBuilder.newJob(WidgetGraphJob.class)
                .withIdentity("jobName"), "groupName").requestRecovery(true).build()

创建触发器:

trigger = TriggerBuilder.newTrigger().withIdentity("triggerName", "groupNmae").startNow() .withSchedule(simpleSchedule().withIntervalInSeconds(10).repeatForever()).build();

开始工作:

 Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
 scheduler.scheduleJob(job, trigger);

Quartz配置:

#============================================================================
# Configure Main Scheduler Properties  
#============================================================================
org.quartz.scheduler.instanceName: MyScheduler
org.quartz.scheduler.instanceId = AUTO
#============================================================================
# Configure ThreadPool  
#============================================================================
org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount: 100
org.quartz.threadPool.threadPriority: 5
#============================================================================
# Configure JobStore  
#============================================================================
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore

这个问题有更好的解决方案吗?我可以将linux crontab视为一种可能的解决方案(我应该单独管理秒部分,因为crontab不支持秒)或石英就足够了,我只需要增强我的硬件配置或选择其他JobStore配置?

非常感谢你的帮助。最好的问候

0 个答案:

没有答案