Mola de arranque do método de aplicação executado periodicamente

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 SpingBootnó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.

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=311831&siteId=1
Recomendado
Clasificación