1

我有弹簧集成入站适配器,它工作得很好,如下。而且我还在数据库中以集群模式设置了 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>

但它不起作用。我正在寻找解决方案,以便触发器可以处于集群模式,将触发器信息保存在石英表中。

4

0 回答 0