我有弹簧集成入站适配器,它工作得很好,如下。而且我还在数据库中以集群模式设置了 Quartz(因此保留了触发器/调度程序)。对于扩展org.quartz.Job
类的 Job,它也可以正常工作。我试图使轮询器处于int-jpa:inbound-channel-adapter
集群模式,这样即使它部署在多个节点中,也只有一个节点在运行。我有为 serviceactivator 这样做的想法,但我不确定如何在我使用的场景中执行此操作int-jpa:inbound-channel-adapter
。我正在使用 spring 4 和 Quartz 2。
<int-jpa:inbound-channel-adapter
id="inboundChannelAdapterIIDDataJpa"
channel="inboundChannelAdapterOne"
entity-manager="entityManager"
jpa-query="select g from House g"
expect-single-result="false"
delete-after-poll="false">
<int:poller fixed-rate="50000">
<int:transactional propagation="REQUIRED"
transaction-manager="transactionManager" />
</int:poller>
</int-jpa:inbound-channel-adapter>
我尝试将 poller ( 上面 ) 替换为然后像这样定义 cron ;
<bean id="mytrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="cronExpression" value="0 0/5 * * * ?" />
<property name="jobDetail" ref="inboundChannelAdapterIIDDataJpa" />
</bean>
这里 jobDetail 引用适配器 ID。然后在调度程序中有“mytrigger”
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="mytrigger" />
</list>
</property>
</bean>
但它不起作用。我正在寻找解决方案,以便触发器可以处于集群模式,将触发器信息保存在石英表中。