如何在spring启动中使用@Lazy加载RabbitMQ队列?



实际上,在我的RabbitMQ配置中,我为每个队列声明了10个消费者。所以所有的消费者线程都是在我的Spring Boot应用程序完全启动之前创建的,所以它在应用程序启动上花费了时间。

我想延迟加载所有我的Rabbitmq队列当我的项目是起来。我试着在配置类上使用@Lazy,但它似乎不起作用。

是否有办法声明延迟加载队列?

@RabbitListener(或侦听器容器)上设置autoStartup="false"

然后手动启动监听器。

https://docs.spring.io/spring-amqp/docs/current/reference/html/集装箱管理

适用于@RabbitListenerstart()容器,如果它们是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();
}
}

最新更新