实际上,在我的RabbitMQ配置中,我为每个队列声明了10个消费者。所以所有的消费者线程都是在我的Spring Boot应用程序完全启动之前创建的,所以它在应用程序启动上花费了时间。
我想延迟加载所有我的Rabbitmq队列当我的项目是起来。我试着在配置类上使用@Lazy
,但它似乎不起作用。
是否有办法声明延迟加载队列?
在@RabbitListener
(或侦听器容器)上设置autoStartup="false"
。
然后手动启动监听器。
https://docs.spring.io/spring-amqp/docs/current/reference/html/集装箱管理
适用于@RabbitListener
或start()
容器,如果它们是bean。
你所需要做的就是设置"autoStartup=false"@RabbitListener:
@RabbitListener(queues = "${yourqueue}",autoStartup = "false")
然后找到所有注册的兔子监听器并启动它:
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(SimPurchaseApplication.class, args);
RabbitListenerEndpointRegistry rabbitListeners = run.getBean(RabbitListenerEndpointRegistry.class);
for (MessageListenerContainer listenerContainer : rabbitListeners.getListenerContainers()){
listenerContainer.start();
}
}