当前位置: 首页 > 面试题库 >

spring integration + cron + quartz in cluster?

曾英睿
2023-03-14
问题内容

我有一个由cron表达式触发的spring集成流程,如下所示:

<int-ftp:inbound-channel-adapter id="my-input-endpoint" ...>
    <int:poller trigger="my-trigger"/>
</int-ftp:inbound-channel-adapter>

<bean id="my-trigger"
   class="org.springframework.scheduling.support.CronTrigger">
  <constructor-arg value="0 * * * * *" />
</bean>

它工作正常。但是现在我必须扩展实现以使其准备就绪(在同一时间仅在一个群集节点上执行作业)。

我希望在集群模式下使用Quartz框架(在数据库中持久化作业状态)来触发这个集成流。石英提供了一个漂亮的解决方案,开箱即用。唯一的问题是如何整合石英与现有的内置通道适配器?poller的“trigger”属性只接受org.springframework.scheduling.trigger的子类。我找不到“poller触发器”和Quartz框架之间的任何桥梁。

提前谢谢了!


问题答案:

这是一种方法

将入站适配器上的auto-startup属性设置为false。

创建一个仅触发一次的自定义触发器…

public static class FireOnceTrigger implements Trigger {

    boolean done;

    public Date nextExecutionTime(TriggerContext triggerContext) {
        if (done) {
            return null;
        }
        done = true;
        return new Date();
    }

    public void reset() {
        done = false;
    }
}

在quartz作业中,获取对触发器和SourcePollingChannelAdapter的引用。

石英扳机点火时,进行石英作业

  • adapter.stop()
  • trigger.reset()
  • adapter.start()


 类似资料:
  • 如果要在指定的时间间隔(例如每天一次或每周一次)运行命令或php program ,可以在此界面中设置cron作业。 Cron jobs允许您自动运行特定的命令或程序。 如果您使用的是CRM或计费软件等软件,则通常需要这样做。 更频繁地设置cron作业可能会降低服务器的性能。 设置Cron Job 要添加新的cron作业,请按照下列步骤操作 - Step 1 - 通过单击cPanel中“高级”部分

  • 问题内容: 我正在尝试在旧版Java / Spring / Hibernate项目中执行cron作业,因此我决定使用spring调度程序。 我希望myTask.doStuff在每个月的第一个星期日的12:00运行。 在我的application-context.xml中,我已将任务计划程序配置为: 问题cron表达式本身是:0 0 12?1/1 SUN#1 * 并且是一个bean,它有一个名为方法

  • Quartz Cron生成工具(表达式生成器) 开源 该软件需要在 .Net 4.0 环镜下才能运行

  • 问题内容: 我正在尝试在旧版Java / Spring / Hibernate项目中执行cron作业,因此我决定使用spring调度程序。 我希望myTask.doStuff在每个月的第一个星期日的12:00运行。 在我的application-context.xml中,我已将任务调度程序配置为: 问题cron表达式本身是: 0 0 12? 1/1 SUN#1 * 并且是一个bean,它有一个名为

  • 计划任务 计划任务是一项使系统在规定时间自动执行某些特定任务的功能,合理设置执行时间,能有效地为服务器减轻负担。触发任务除系统指定的时间外,用户行为也可触发。 使用 1.创建计划任务:在 app/Application/Cron/CronScript/ 目录下,新建计划任务文件 样例: <?php namespace Cron\CronScript; use Cron\Base\Cron; c

  • 介绍: 基于bootstrap3,用来生成quartz cron表达式,可配置弹出窗口的位置。 特别鸣谢: http://www.cnblogs.com/yanweidie/p/3537144.html https://github.com/hsal/cronGen 插件在这两者的基础上进行合并和优化,插件使用简单,下一步计划完善反向解析功能。 使用示例: 1.引入依赖 <link href="b

  • 问题内容: 我正在尝试从cron运行Django管理命令。我正在使用virtualenv使我的项目沙盒化。 我在这里和其他地方都看到了一些示例,这些示例显示了在virtualenv内部运行管理命令的过程,例如: 但是,即使syslog在任务应该启动时显示一个条目,该任务也不会实际运行(脚本的日志文件为空)。如果我从外壳程序手动运行该行,它将按预期工作。 当前,我可以通过cron运行命令的唯一方法是

  • 为了检测cron作业中可能发生的故障,我设置了另一个cron作业来检查crontab发出的上一个日志: 手动运行时,一切正常: 剧本是这样写的 Crontab: 但当使用crontab运行时,日志读取为空。我错过了什么?