かなり標準的なスプリングブート(1.3.5)アプリケーションがあります。スプリングブート、スケジュールされたタスク、ダブル呼び出し
メインアプリケーションのエントリポイントで試してみました@EnableScheduling
(および@Configuration
注釈付きクラスで有効なスケジューリング。@Scheduled
方法(単純FIXEDDELAYスケジュールに単純なクラスを作成し
)。
スケジュールされたタスクが二回実行する(常に)私がこれまでに収集したものから。
、それは2つのコンテキストがロードされているので、おそらくあり、そしてthusly二回私の豆を拾う。 [OK]をクリックします。 、どのように私は、この二重のexecuを防ぐ/修正すればよいですすべての設定は基本的に隠されたスプリングブートの魔法ですか?
Frameworkのバージョン:
- 春ブーツ1.3.5
- 春クラウドブリクストンSR1
主な用途:
@SpringBootApplication
@EnableDiscoveryClient
@EnableAsync
@EnableCircuitBreaker
public class AlertsApplication {
public static void main(final String[] args) {
SpringApplication.run(AlertsApplication.class, args);
}
}
マイタスククラス(HookCreateRequestリストはに引っ張られますapplication.yml
から - 私は現在、関連性があるとは思わない必要に応じて提供することができます):
@ConditionalOnProperty(name = "init.runner", havingValue = "InitRunner")
@ConfigurationProperties(prefix = "webhook")
public class InitRunner /*implements CommandLineRunner*/ {
private final List<HookCreateRequest> receivers = new ArrayList<>();
@Autowired
private WebHookService hookService;
@Scheduled (fixedRate = 300000)
public void run() throws Exception {
getReceivers().stream().forEach(item -> {
log.debug("Request : {}", item);
hookService.create(item);
});
}
public List<HookCreateRequest> getReceivers() {
return receivers;
}
}
ゼロxml構成です。 ほかに関連性のあるものは何ですか?
EDIT 2016年7月4日
それが実行されるとき、私は(私は2つの異なるインスタンスが作成されたことが疑われる)出力にスケジュールされたインスタンスを変更しました。ただし、ログはタスクオブジェクトのSAMEインスタンスであることを示しているようです。 logs: 15:01:16.170 DEBUG - scheduled.ScheduleHookRecreation - Schedule task running: [email protected] ...task stuff happening ...first run completes, then: 15:01:39.050 DEBUG - scheduled.ScheduleHookRecreation - Schedule task running: [email protected]
したがって、同じタスクインスタンス(@705a651b
)であるように見えます。なぜ今は甘いものの名前で2回執行されるのだろうか?
EDIT 2016年7月5日
私はでちょうどいくつかのログ出力で、スケジュールされたメソッドを運ぶクラスに@PostConstruct
メソッドを追加しました。私は@PostConstruct
メソッドが呼び出されていることを確認できたことにすることでこれはおそらく2倍のスケジューラに送られることを意味します。だからこれを防ぐ方法は?
あなたが提供した情報から非常に難しいです。問題の[最小で完全で検証可能な例](/ help/mcve)を共有できますか? –
@AndyWilkinson fair - 十分な情報とコードスニペットを追加するために編集された質問。必要に応じて提供するよりも、他に何が関連するのかは本当に分かりません。 – demaniak