我是Quartz的新手,我需要每10秒启动数万个作业。
可能吗?如果是的话,我该怎么做?是否有特定配置或任何建议?
修改
我正在提供有关我的问题的更多信息:
我的平台定位了大约1000个用户。每个用户最多可以有10个仪表板。每个仪表板都与托管在单独服务器上的文本文件相关。这些文本文件可以由我可能无法控制的其他应用程序更新。用户可以配置其仪表板的更新频率。允许的最小值为10秒。
要解决此问题,我认为我们应该为每个仪表板创建一个作业/线程/进程/工作者(称之为你想要的:))并配置“作业”以每x秒读取相关的文本文件如果检测到更改,请更新仪表板。
因此,在最坏的情况下,我的解决方案应该每10秒支持10000个“作业”。
技术环境是:
我已经尝试过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配置?
非常感谢你的帮助。最好的问候