依赖 spring-boot-starter-amqp ,代码里有 @Resource 等注入了 RabbitAdmin 等,如何让启动时不要自动连接 mq 服务呢。等需要的时候再启动。这样也可以不用改动太多代码。
1 ccw4wcc 188 天前 spring.rabbitmq.listener.direct.auto-startup= false spring.rabbitmq.listener.simple.auto-startup= false 试试行不行,不行的话往 Springboot 健康检测那个方向去搜索一下 |
![]() | 4 miaotaizi 188 天前 Conditional 相关的注解行吗? |
![]() | 6 cxhello 187 天前 @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 187 天前 消费队列配置 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()); } } |