标签: quartz-scheduler

Java中从Java进行异步处理

我目前有一个tomcat容器 - 在其上运行的servlet监听请求.我需要HTTP请求的结果是作业队列的提交,然后将异步处理.我希望每个"作业"在数据库中连续保存,以便在发生故障时进行跟踪和恢复.我一直在做很多阅读.这是我的选择(注意我必须使用开源的东西).

1)JMS - 使用ActiveMQ(但是在这种情况下谁是该作业的消费者另一个servlet?)

2)让我的请求在数据库中创建一行.在我的Tomcat容器中有一个始终运行的独立servlet - 它使用Quartz Scheduler或java.util.concurrent中提供的实用程序来连续处理作为作业的行(使用线程池).

我倾向于后者,因为查看JMS文档让我头疼,虽然我知道它是一个更强大的解决方案,但我需要相对快速地实现它.在任何情况下,在部署此服务器的早期我都没有预料到会产生巨大的负载.

很多人都认为Spring可能对1或2都有好处.但是我从未使用过Spring,我甚至不知道如何开始使用它来解决这个问题.任何有关如何潜入而无需重新编写整个项目的指针都会很有用.

否则,如果您可以权衡选项1或2,这也是有用的.

澄清:异步过程是屏幕抓取第三方网站,并向原始请求者发送消息通知.第三方网站有点不稳定和缓慢,这就是为什么它将作为异步进程处理(内置几次重试尝试).我还将从该站点提取文件并将其存储在S3中.

java tomcat asynchronous jms quartz-scheduler

5
推荐指数
1
解决办法
3605
查看次数

Web应用程序中的Quartz

我在Web应用程序中调度作业时遇到问题.如果我们必须在Web应用程序中安排作业,我们可以使用java util Timer/TimerTask或Quartz(还有其他调度机制,但我考虑过Quartz).我正在考虑使用哪一个,当我点击网站http://oreilly.com/pub/a/java/archive/quartz.html?page=1时说使用计时器有一个不好的效果,因为它创建了一个线程在最后一行没有容器控制.其他页面讨论了Quartz及其功能,但我可以读到Quartz还使用线程和/或线程池来安排任务.我的猜测是这些线程也不受容器控制

任何人都可以向我澄清这是否可以安全地在我的Web应用程序中使用Quartz而不创建挂起线程或线程锁定问题?提前致谢

java quartz-scheduler

5
推荐指数
1
解决办法
1779
查看次数

Quartz:触发多个作业

在Quarts中,我可以使用单个触发器来安排多个作业,以便所有作业并行执行.做这个的最好方式是什么.

例如,每小时并行执行Jobs j1,j2,...,jn.假设作业之间没有依赖关系.

java quartz-scheduler

5
推荐指数
2
解决办法
7614
查看次数

Quartz调度程序theadpool

随Quartz Scheduler一起提供的SimpleThreadPool类没有FIFO行为.我想确保如果我继续向调度程序添加作业,它们将以先进先出的方式解决.有没有可用的ThreadPool?或者有没有其他方法来实现这一目标?

java quartz-scheduler

5
推荐指数
1
解决办法
1247
查看次数

为什么Quartz Scheduler(JobSToreCMT)需要使用两个数据源?

我发现这个答案:1.对Quartz要求数据源的答案很长,但是,如果你想要更深入的答案,我相信我需要深入研究源代码或做更多的研究:a.JobStoreCMT依赖于使用Quartz的应用程序管理的事务.在尝试安排(或取消安排)作业/触发器之前,必须正在进行JTA事务.这允许调度的"工作"成为应用程序"更大"事务的一部分.JobStoreCMT实际上需要使用两个数据源 - 一个具有由应用程序服务器管理的连接的事务(通过JTA)和一个具有不参与全局(JTA)事务的连接的数据源.当应用程序使用JTA事务(例如通过EJB会话Bean)执行其工作时,JobStoreCMT是合适的.(参考; http://quartz-scheduler.org/documentation/quartz-1.x/configuration/ConfigJobStoreCMT)

但是,在我们的特定应用程序中存在与非事务驱动程序的冲突.有谁知道Quartz(JobsStoreCMT)是否可以只使用事务数据源?

datasource xa quartz-scheduler

5
推荐指数
1
解决办法
2830
查看次数

作业调度:EJB 3.1定时器还是Quartz?

我们的商店目前使用Quartz进行现有项目.唯一的缺点是Quartz线程不受管理.

我们正在转向EJB 3.1,我想知道是否有任何方法可以复制Quartz作业调度的动态特性.具体来说,我想知道是否有人听说有人编写GUI前端来使用EJB 3.1处理,管理或编辑作业.

从我所读到的,这似乎不可能或非常麻烦.似乎EJB 3.1计时器对它们所在的bean是私有的,这使得收集它们并检查它们的过程相当困难.此外,似乎EJB 3.1计时器纯粹是程序/声明,即它们需要重新部署来修改其参数或设置.

在这个舞台上的任何想法,想法或经验?

最后请注意,我们正在使用Websphere 8.0.

websphere ejb quartz-scheduler ejb-3.1

5
推荐指数
1
解决办法
5352
查看次数

所有工作因未知原因而失败; 适用于RAMJobStore但不适用于MS SQL

我在Microsoft Bot Framework的应用程序中使用Quartz.NET.我正在本地计算机上调试它(尽管数据库仍在Azure上).

由于某种原因,所有工作都会失败,他们不会再次开火,即使我尝试了各种各样的.WithMisfire ......选项.

我将工作设置为每15-20秒运行一次以进行测试.我在我的作业类中的Execute()的第一行设置了一个断点,但它从未到达那一点.因此,所有作业都失败,甚至没有达到Execute().

我可以看到在数据库中创建的作业和触发器TRIGGER_STATE = WAITING.在达到指定的执行时间后,州改变为ERROR.

这是我启动调度程序的代码:

public static IScheduler StartAndGetScheduler()
        {
            NameValueCollection properties = new NameValueCollection();
            properties["quartz.jobStore.type"] = "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz";
            properties["quartz.jobStore.driverDelegateType"] = "Quartz.Impl.AdoJobStore.StdAdoDelegate, Quartz";
            properties["quartz.jobStore.tablePrefix"] = "QRTZ_";

            properties["quartz.jobStore.dataSource"] = "default";
            properties["quartz.dataSource.default.connectionString"] = "Server=*************.database.windows.net,1433;Initial Catalog=*************;" +
                "Persist Security Info=False;User ID=***********;Password=**********;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;";
            properties["quartz.dataSource.default.provider"] = "SqlServer-20";
            properties["quartz.jobStore.useProperties"] = "true";
            properties["quartz.jobStore.lockHandler.type"] = "Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz";
            properties["quartz.jobStore.driverDelegateType"] = "Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz";


            ISchedulerFactory sf = new StdSchedulerFactory(properties);
            scheduler = sf.GetScheduler();
            scheduler.Start();

            return scheduler;
        }
Run Code Online (Sandbox Code Playgroud)

这是调度作业(用于测试)的代码:

        try {
            Random rnd = …
Run Code Online (Sandbox Code Playgroud)

c# quartz-scheduler quartz.net

5
推荐指数
0
解决办法
217
查看次数

Quartz调度程序不在dropwizard应用程序中执行SQL查询

我有一个使用dropwizard框架创建的应用程序,我已经注册了一个计划在每个指定的持续时间后运行的quartz-scheduler作业.此作业向SQL Server DB发出SQL查询并迭代ResultSet并将数据设置为POJO类,稍后将其推送到队列.

SQL查询使UNION连接多个表,这些表使用where子句中相关表的last_modified_time列获取在增量时间内修改的记录的数据.pom.xml中包含的DB jar是sqljdbc-4.4.0,quartz版本是2.2.1

查询如下所示:

SELECT 
    u.last_modified_date, 
    u.account_id, 
    u.user_id, 
    ud.is_active 
FROM user u WITH (NOLOCK) 
JOIN user_details ud with (NOLOCK) ON u.account_id = ud.account_id AND u.user_id = ud.user_id 
WHERE u.last_modifed_date > ? AND ud.last_modifed_date <= ?

UNION

SELECT 
    u.last_modified_date, 
    u.account_id, 
    u.user_id, 
    ud.is_active 
FROM user u WITH (NOLOCK) 
JOIN user_details ud with (NOLOCK) ON u.account_id = ud.account_id AND u.user_id = ud.user_id 
JOIN user_registration_details urd WITH (NOLOCK) ON urd.account_id = u.account_id AND urd.user_id = u.user_id AND urd.reg_id = ud.reg_id
WHERE urd.last_modifed_date …
Run Code Online (Sandbox Code Playgroud)

java database sql-server quartz-scheduler dropwizard

5
推荐指数
1
解决办法
544
查看次数

使用Spring Boot在Quartz多个作业中自动装配不起作用

我试着在春天使用石英调度器.配置多个作业时,我得到以下异常

Job2中方法jobTrigger的参数0需要一个无法找到的类型为'org.quartz.JobDetail'的bean.

quartz - v2.3,Spring - v4.2.x

配置类

@Configuration
 public class SchedulerConfig {

private static final Logger LOG = LoggerFactory.getLogger(SchedulerConfig.class);

@Autowired
List<Trigger> triggers;

@Bean
public JobFactory jobFactory(ApplicationContext applicationContext) {
    AutowiringSpringBeanJobFactory jobFactory = new AutowiringSpringBeanJobFactory();
    jobFactory.setApplicationContext(applicationContext);
    return jobFactory;
}

@Bean
public SchedulerFactoryBean schedulerFactoryBean(JobFactory jobFactory)  throws IOException {
    SchedulerFactoryBean factory = new SchedulerFactoryBean();
          factory.setAutoStartup(true);
    factory.setJobFactory(jobFactory);
         factory.setQuartzProperties(quartzProperties());
    if (triggers != null && !triggers.isEmpty()) {
         LOG.info("starting jobs... Total Triggers - " + triggers.size());
        factory.setTriggers(triggers.toArray(new Trigger[triggers.size()]));
    }

    return factory;
}

@Bean
public Properties quartzProperties() throws …
Run Code Online (Sandbox Code Playgroud)

java spring quartz-scheduler spring-boot quartz

5
推荐指数
2
解决办法
6583
查看次数

Java Quartz CronExpression验证错误的cron表达式

我正在使用quartz-scheduler来安排我的工作.我有一个错误的cron表达式:

1 15 10 ? * *ssddddfd
Run Code Online (Sandbox Code Playgroud)

当我做:

String cronExpression = "1 15 10 ? * *ssdddfd";
boolean checkCronExpression = CronExpression.isValidExpression(cronExpression);
Run Code Online (Sandbox Code Playgroud)

checkCronExpressiontrue.但是,当我看到表达时,这显然是错误的.有没有其他人也遇到过类似的问题?

注意:包是:package org.quartz;

石英版本是:2.2.3

请从http://www.javadoc.io/doc/org.quartz-scheduler/quartz/2.2.3查看CronExpression类.

我也试过课的validateExpression方法CronExpression没有成功.

java cron quartz-scheduler

5
推荐指数
1
解决办法
440
查看次数