Edward Wedekind:
Eu estou jogando com um simples aplicativo Primavera Boot and RabbitMQ.
No entanto, eu não consigo descobrir como executar um método periodicamente.
Aqui é a minha classe 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();
}
}
E o sendMessage método é definido como a seguir
@Scheduled(fixedRate = 3000L)
public void sendMessage() {
log.info("Sending message...");
rabbitTemplate.convertAndSend("my-exchange", "my-routing-key", "TEST MESSAGE");
}
No entanto, este método é chamado apenas uma vez, eu posso ver apenas uma única linha no console.
O que eu perdi no meu código?
Obrigado.
CROSP:
A fim de trabalhar com tarefas agendadas em SpingBoot
nós precisamos dizer a estrutura para programadores configurar e threads. Você perdeu uma única anotação em sua definição de classe principal - @EnableScheduling
.
Então, adicioná-lo à sua classe como segue:
@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();
}
}
E programação começará funcionando bem)
Espero que isto ajude.