在Spring中,我希望通过在autoStartup=false上设置InboundChannelAdapter来禁用轮询器。但是通过下面的设置,我的计票器都不会对我的Tomcat实例1或Tomcat实例2开火,我的两个Tomcat实例都部署了相同的代码。我希望在其中一个实例上禁用计票器,因为我不希望同时对两个Tomcat实例进行相同的作业轮询。
下面是InboundChannelAdapter:
@Bean
@InboundChannelAdapter(value = "irsDataPrepJobInputWeekdayChannel", poller = @Poller(cron="${batch.job.schedule.cron.weekdays.irsDataPrepJobRunner}", maxMessagesPerPoll="1" ), autoStartup = "${batch.job.schedule.cron.weekdays.irsDataPrepJobRunner.autoStartup}")
public MessageSource<JobLaunchRequest> pollIrsDataPrepWeekdayJob() {
return () -> new GenericMessage<>(requestIrsDataPrepWeekdayJob());
}属性文件如下所示。Tomcat实例1的属性文件:
# I wish for this job to run on Tomcat instance 1
batch.job.schedule.cron.riStateAgencyTransmissionJobRunner=0 50 14 * * *
# since autoStartup defaults to true, I do not provide:
#batch.job.schedule.cron.riStateAgencyTransmissionJobRunner.autoStartup=true
# I do NOT wish for this job to run on Tomcat instance 1
batch.job.schedule.cron.weekdays.irsDataPrepJobRunner.autoStartup=false
# need to supply as poller has a cron placeholder
batch.job.schedule.cron.weekdays.irsDataPrepJobRunner=0 0/7 * * * 1-5Tomcat实例2的属性文件:
# I wish for this job to run on Tomcat instance 2
batch.job.schedule.cron.weekdays.irsDataPrepJobRunner=0 0/7 * * * 1-5
# since autoStartup defaults to true, I do not provide:
#batch.job.schedule.cron.weekdays.irsDataPrepJobRunner.autoStartup=true
# I do NOT wish for this job to run on Tomcat instance 2
batch.job.schedule.cron.riStateAgencyTransmissionJobRunner.autoStartup=false
# need to supply as poller has a cron placeholder
batch.job.schedule.cron.riStateAgencyTransmissionJobRunner=0 50 14 * * *属性文件作为VM选项传递,例如"-Druntime.scheduler=dev1“。我不能使用"-“作为cron表达式禁用其中一个JVM上的轮询器--类似于此处的ask:Poller annotation with cron expression should support a special disable character 。
我的目标是能够从Tomcat实例1或Tomcat实例2手动调用作业。我在上面提到的设置的问题是,没有一个计票者按照他们的cron表达式开火。
发布于 2022-02-05 03:48:20
考虑调查一种领导人选举模式:https://docs.spring.io/spring-integration/docs/current/reference/html/messaging-endpoints.html#leadership-event-handling。
这样,默认情况下,这些端点处于非启动状态,并且处于相同的角色中。选举将选出一位领导人,只从这一位开始。
当然,必须有一些共同的外部服务来控制领导。
https://stackoverflow.com/questions/70994714
复制相似问题