如何安排@RabbitListener

时间:2019-06-13 09:32:35

标签: spring-boot rabbitmq

根据要求,我不想在一天中花几个小时来消耗队列中的消息。

/*Consume time from 9AM to 5PM*/
@Scheduled(cron = "* * 9-17 * * *")
@RabbitListener(queues = "${QUEUE_NAME}")
public void processMessage(SomeMessage message) {

}

1 个答案:

答案 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

这需要更改生产者。消费者可能一直在运行。但是,如果在发送消息期间您延迟了它,那么它将根据您的计划进行发送。