У меня есть метод в приложении Spring Boot, который прослушивает очередь в ActiveMQ. Я хочу запланировать метод так, чтобы он не начинал слушать очередь при запуске приложения и запускался каждые X минут.
Вот метод, который я написал, чтобы выполнить задачу. Я отключил автоматический запуск JMSListener
, чтобы он не начинал прослушивание при запуске приложения.
@Scheduled(fixedDelay = 1000, initialDelay = 1000)
@JmsListener(destination = "queueName")
public void receiveMessage(final Message jsonMessage) throws JMSException {
System.out.println("Received message " + jsonMessage);
}
@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory());
factory.setConcurrency("1-1");
factory.setAutoStartup(false);
return factory;
}
Но когда я запускаю приложение, я получаю исключение, которое говорит, что у запланированного метода не может быть аргументов:
Encountered invalid @Scheduled method 'receiveMessage': Only no-arg methods may be annotated with @Scheduled
Есть ли способ, которым я могу запланировать JMSListener
такчто он запускается после задержки при запуске приложения и должен запускаться каждые X минут и читать сообщения из очереди?