根据要求,我不想在一天中花几个小时来消耗队列中的消息。
/*Consume time from 9AM to 5PM*/
@Scheduled(cron = "* * 9-17 * * *")
@RabbitListener(queues = "${QUEUE_NAME}")
public void processMessage(SomeMessage message) {
}
答案 0 :(得分:2)
我看到一些选择
该应用程序可以由cron(或其他调度程序)启动,一旦启动,将自己调度为在一段时间后停止。
只需使用https://docs.spring.io/spring-amqp/docs/2.1.4.RELEASE/reference/#polling-consumer
使用 循环中的org.springframework.amqp.coreAmqpTemplate#receive方法。确保循环仅在计划的时间内运行。
https://www.cloudamqp.com/docs/delayed-messages.html
这需要更改生产者。消费者可能一直在运行。但是,如果在发送消息期间您延迟了它,那么它将根据您的计划进行发送。