使 Quartz 调度程序在没有 JDBC 的情况下持久化

发布于 2024-10-14 20:21:26 字数 515 浏览 2 评论 0原文

我们正在围绕 MongoDB 构建一个应用程序,并且需要定期运行类似 cron 的作业。当项目基于带有 JDBC 的 RDBMS 时,我之前曾使用 Quartz 来处理此类事情。

由于我们已经在这个项目中使用 MongoDB 作为我们的主要数据存储,我不想引入 RDBMS 只是为了持久化 Quartz 作业,但似乎没有任何类型的 JobStore MongoDB 实现。

谁能推荐一种用 MongoDB 支持 Quartz 的方法,或者 Quartz 的简单替代方案?我的需求相当简单(使用某种配置方式运行各种 java 作业,如 cron)。

We're building an app around MongoDB, and have a need to run cron-like jobs periodically. I've used Quartz before for this kind of thing when projects were based around an RDBMS with JDBC.

Since we're already using MongoDB for our main datastore in this project, I'd prefer to not introduce an RDBMS simply to persist Quartz jobs, but there doesn't seem to be any kind of JobStore implementatiom for MongoDB.

Can anyone recommend either a way to back Quartz with MongoDB, or a simple alternative to Quartz? My needs are fairly simple (run various java jobs with some manner of configuration, à la cron).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

Saygoodbye 2024-10-21 20:21:26

编辑:最新实现https://github。 com/michaelklishin/quartz-mongodb 从下面的存储库分叉


我为 Quartz 编写了一个 MongoDB JobStore,位于此处: https://github.com/mulesoft/quartz-mongodb 它并不支持所有内容,但它适用于很多用例。

Edit: Latest implementation https://github.com/michaelklishin/quartz-mongodb forked from below repo


I wrote a MongoDB JobStore for Quartz which is located here: https://github.com/mulesoft/quartz-mongodb It doesn't support everything, but it works for a bunch of use cases.

随风而去 2024-10-21 20:21:26

我们使用 Spring 运行quartz,它只是一个包含定义的作业和 cron 表达式的 XML 文件。

在 Spring 中声明一个作业:

  <bean name="myJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="concurrent" value="false"/>
    <property name="targetBeanName" value="myBean"/>
    <property name="targetMethod" value="myScheduledMethod"/>
  </bean>

  <bean id="myJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail" ref="myJob"/>
    <!-- every 30s -->
    <property name="cronExpression" value="0/30 * * * * ?"/>
  </bean>

Quartz Wiring:

  <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
      <!-- List of batch jobs to be fed to the scheduler. -->
      <list>
        <ref bean="myTrigger"/>
      </list>
    </property>
  </bean>

运行它:

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App 
{
    public static void main( String[] args ) throws Exception
    {
        new ClassPathXmlApplicationContext("jobs-context.xml");
    }
}

We run quartz with Spring and it's just an XML file with the jobs defined and cron expressions.

Declare a job in Spring:

  <bean name="myJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="concurrent" value="false"/>
    <property name="targetBeanName" value="myBean"/>
    <property name="targetMethod" value="myScheduledMethod"/>
  </bean>

  <bean id="myJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail" ref="myJob"/>
    <!-- every 30s -->
    <property name="cronExpression" value="0/30 * * * * ?"/>
  </bean>

Quartz Wiring:

  <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
      <!-- List of batch jobs to be fed to the scheduler. -->
      <list>
        <ref bean="myTrigger"/>
      </list>
    </property>
  </bean>

Run it with:

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App 
{
    public static void main( String[] args ) throws Exception
    {
        new ClassPathXmlApplicationContext("jobs-context.xml");
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文