依赖 spring-boot-starter-amqp ,代码里有 @Resource 等注入了 RabbitAdmin 等,如何让启动时不要自动连接 mq 服务呢。等需要的时候再启动。这样也可以不用改动太多代码。
1
ccw4wcc 5 天前
spring.rabbitmq.listener.direct.auto-startup= false
spring.rabbitmq.listener.simple.auto-startup= false 试试行不行,不行的话往 Springboot 健康检测那个方向去搜索一下 |
![]() |
4
miaotaizi 5 天前
Conditional 相关的注解行吗?
|
![]() |
6
cxhello 4 天前
@iv8d 可以试试这两种方案
@Bean public RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory) { RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory); rabbitAdmin.setAutoStartup(false); return rabbitAdmin; } @Bean @ConditionalOnExpression("'${rabbitmq.admin.enabled}' == 'true'") public RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory) { return new RabbitAdmin(connectionFactory); } |
![]() |
7
lyqiang 4 天前
消费队列配置 autoStartup = false
@RabbitListener(queues = {"xxx.yyy.zzz"},containerFactory = "abcContainerFactory", autoStartup = "false") public void consumer(Message message) { //... } 在某个地方开启消费 Collection<MessageListenerContainer> listenerContainers = rabbitListenerEndpointRegistry.getListenerContainers(); for (MessageListenerContainer listener : listenerContainers) { if (!listener.isAutoStartup() && !listener.isRunning()) { String[] queueNames = ((SimpleMessageListenerContainer) listener).getQueueNames(); listener.start(); log.info("queueName:{}, isRunning:{}", queueNames, listener.isRunning()); } } |