エドワードWedekind:
私はシンプルな春のブートアプリケーションとRabbitMQので遊んでいます。
しかし、私は定期的にメソッドを実行する方法を見つけ出すことはできません。
ここに私のApplicationクラスであります
@SpringBootApplication
public class SampleApp {
@Autowired
Sender sender;
public static void main(String[] args) {
SpringApplication.run(SampleApp.class, args);
}
@EventListener(ApplicationReadyEvent.class)
public void doSomethingAfterStartup() {
sender.sendMessage();
}
}
そして、のsendMessageメソッドは、以下のように定義されます
@Scheduled(fixedRate = 3000L)
public void sendMessage() {
log.info("Sending message...");
rabbitTemplate.convertAndSend("my-exchange", "my-routing-key", "TEST MESSAGE");
}
この方法は、一度だけ呼ばれるしかし、私はコンソールにのみ、単一の行を見ることができます。
私は私のコードで逃した何?
ありがとうございました。
CROSP:
中にスケジュールされたタスクを使用するためにSpingBoot
、私たちのconfigureスケジューラやスレッドへの枠組みを伝える必要があります。あなたは、あなたのメインのクラス定義では、単一の注釈を見逃しています- @EnableScheduling
。
だから、次のように自分のクラスに追加します。
@SpringBootApplication
@EnableScheduling
public class SampleApp {
@Autowired
Sender sender;
public static void main(String[] args) {
SpringApplication.run(SampleApp.class, args);
}
@EventListener(ApplicationReadyEvent.class)
public void doSomethingAfterStartup() {
sender.sendMessage();
}
}
そして、スケジューリング)が正常に動作を開始します
お役に立てれば。