gpt4 book ai didi

集群中的 spring 集成 + cron + quartz ?

转载 作者:行者123 更新时间:2023-12-04 07:25:57 25 4
gpt4 key购买 nike

我有一个由 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 框架(将作业状态保留在数据库中)来触发此集成流程。 Quartz 提供了一个开箱即用的美丽解决方案。唯一的问题是如何将 Quartz 与现有的 inbout-channer-adaptor 集成? “poller”的“trigger”属性只接受org.springframework.scheduling.Trigger的子类。我在“轮询触发器”和 Quartz 框架之间找不到任何桥梁。

提前谢谢了!

最佳答案

这是一种方法...

将入站适配器上的自动启动属性设置为 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 的引用。 .

当 quartz 触发器触发时,让 quartz 工作
  • 适配器.stop()
  • trigger.reset()
  • 适配器.start()
  • 关于集群中的 spring 集成 + cron + quartz ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11563469/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com